domingo, 15 de septiembre de 2013

Dynamics CRM 2013 ya está casi aquí!

 

Guauu!, por donde empezar? Dynamics CRM 2013 ya ésta a la vuelta de la esquina, y necesito empezar a hablar de todo lo nuevo que se nos viene.

He decidido empezar a hablar a nivel general, resumiendo poco a poco las cosas nuevas, que no son pocas, para ir después explicándolas una a una en detalle.

A nivel general las mejoras se centran en la parte del usuario, sobre todo en los cambios de interfaz y otras nuevas funcionalidades muy útiles. Me he encontrado con grandes novedades, que realmente me han encantado, estoy seguro que a todos les encantarán y que los usuarios lo agradecerán mucho.

Por empezar por una parte, el nuevo CRM 2013 se ve así:

image

La navegación cambia mucho, la Navigation bar que había antes, ahora aparece en la parte superior con menús desplegables:

image

image

La interfaz de usuario cambia totalmente, viéndose mucho mas limpia y ágil y, sobre todo, se han eliminado los fastidiosos popups.

En cuanto a algunos de los temas que encuentro mas interesantes de la nueva versión destaco los siguientes:

  • Los Ribbon, dejan de existir, a partir de ahora se utilizan los Command bars:

image

  • “Inline editing”: en entidades como oportunidades u ofertas, se pueden editar línea a línea (sin popups) las líneas:

image

  • Formularios de tipo vista rápida (Quick view forms): son formularios de solo lectura que pueden ser incluidos en otros formularios. Por ejemplo, un formulario de una cuenta en un Caso:

image

image

  • Nuevo tipo de campo “Image” para poder añadir imágenes a los registros (por ejemplo se podría crear una entidad de países, cada una con sus banderas):

image

image

  • Posibilidad de habilitar la búsqueda rápida (Quick find) de hasta 10 entidades a la vez:

image

image

  • Nuevo formato de campos de tipo “Phone”, para habilitar “Click to call”:

image

image

  • Nuevo tipo de seguridad a través de grupos de acceso (“access teams”), que se definen con una plantilla de seguridad y luego registro a registro:

image

image

image

image

  • Workflows síncronos, se ejecutan como si fueran plugins (realmente maravillosos!):

image

image

  • Existen nuevos campos que se componen de otro vario, por ejemplo para las direcciones:

image

  • Posibilidad de creación de flujos de proceso de negocio (Business process flow), como en Polaris Online, pero ahora mucho mas completos con la posibilidad de añadirlo a cualquier entidad, mas de una por entidad y posibilidad de exportarlos en soluciones:

image

  • Lógica de negocio portable (PBL- Portable Business Logic): es la posibilidad de añadir automatismos a los formularios, sin necesidad de introducir código javascript. Con una condición, se pueden ocultar campos, poner mensajes de error, poner requeridos o valores determinados:

image

image

  • Existe un cliente gratuito para Windows 8 y iPad:

image

  • Nuevos tipos de Formularios de creación rápida:

image

image

  • “Custom Actions”: Esta funcionalidad nos permite crear acciones personalizadas, con una serie de pasos definidos en un workflow y que puede recibir parámetros de distintos tipos y que puede ser llamada desde el “Execute” de los Web Services de CRM:

 

image

image

En resumen, hay mucho nuevo y todo me encanta! Lo he estado probando y funciona de maravilla y sobre todo RÁPIDO y ÁGIL!

Creo sinceramente que el camino por donde se está dirigiendo la solución es el correcto, lo cual me da muy buena expectativas a futuras versiones y futuras mejoras. Mi mas sincera enhorabuena a todo el equipo de producto de Dynamics CRM por el buen trabajo realizado!

Esto es solo el comienzo, viene mucho mas, mas y mas….espero que esta introducción rápida les sirva y os guste. Iré añadiendo análisis en detalle de cada uno de los puntos las próximas semanas.

Saludos cordiales!!

sábado, 7 de septiembre de 2013

Plugins: Transacciones en Pre/Post operations

Después de un tiempo de inactividad en mi blog (aunque no en otras áreas), vuelvo con mcuhas ganas con todo lo nuevo que se viene.
Hoy quiero explicar un poco como funcionan los plugins en los Pre y Post operations.
Al comenzar la ejecución de un plugin en estos pasos, CRM crea una transacción, que provoca que a veces no podamos hacer algunas de las cosas que necesitamos.
En primer lugar al registro que lanza el plugin, se le provoca un bloqueo en la base de datos de SQL Server, que puede provocar que hacer acciones sobre el mismo no se puedan realizar y nos genere unos errores inesperados.
Por otro lado, se inicia una transacción en donde se van guardando los cambios realizados en el registro que lanza el plugin y que además hace un rollback de cualquier otro registro que se cree o modifique.
A continuación pongo un código de ejemplo:
   1: IPluginExecutionContext context =
   2:                 (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
   3:  
   4:             IOrganizationServiceFactory factory =
   5:                 (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
   6:             IOrganizationService service = factory.CreateOrganizationService(context.UserId);
   7:              
   8:  
   9:             ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
  10:  
  11:             tracingService.Trace("Creacion de contacto");
  12:  
  13:             Entity acc = new Entity("account");
  14:             acc.Attributes.Add("accountid",context.PrimaryEntityId);
  15:             acc.Attributes.Add("accountnumber","1232333");
  16:             service.Update(acc);
  17:  
  18:  
  19:             Entity cont = new Entity("contact");
  20:             cont.Attributes.Add("lastname", "Raschkovan");
  21:             cont.Attributes.Add("firstname", "Demian Adolfo");
  22:  
  23:             Guid id=service.Create(cont);
  24:  
  25:             throw new InvalidPluginExecutionException("La cuenta ha sido creada con el id " + id.ToString() + ", pero se quita por estar en transaccion.");

 
Este plugin esta pensado para lanzarse al hacer un “Update” del nombre de la Cuenta. Lo que hace es primero actualizar el numero de cuenta y luego crear un contacto.

En caso de que se produzca un error como el que estoy forzando allí, todo lo que se haya creado o actualizado durante la ejecución del Plugin, es deshecho con un Rollback.

Si lo ejecuto lo que ocurre es lo siguiente:
image

Si comento la última línea, quedan correcto el update de la cuenta y se crea el contacto.

Esto esta muy bien, pero…¿si necesito por ejemplo lanzar una excepción para hacer una validación y además crear un registro en CRM, como lo hago?

Para encontrar una solución, primero hay que entender como guarda CRM esta transacción. Como se ve en el código, yo utilizo el “service” que me da el CRM con el contexto de ejecución del plugin. Todo lo que yo haga con ese contexto, quedará bajo la transacción y por lo tanto desaparecerán con el Rollback.

Entonces, si quiero realizar una operación fuera de la transacción y así evitar un posible Rollback, la solución pasaría por crearnos una nueva llamada a los web services de CRM, por fuera de la conexión que nos da el contexto de CRM. Esto se puede hacer o bien añadiendo una llamada directa a los web services de CRM pasándole las credenciales usuario y password, o a través de algún web service intermedio.

martes, 2 de julio de 2013

Dynamics CRM 2013!

Parece que finalmente se viene la próxima versión: Dynamics CRM 2013!

Microsoft Dynamics CRM 2013 makes business personal

Se acaba de anunciar en la siguiente nota de prensa: http://www.microsoft.com/en-us/news/Press/2013/Jul13/07-02DynamicsCRM13PR.aspx

Cosas que aparecen allí:

  • Conexión con MarketingPilot
  • Business Process
  • Cambios de interfaz de usuario
  • Cliente de movilidad en iPad y Windows 8
  • Yammer
  • Lync y Skype

Mas info: http://www.microsoft.com/en-us/dynamics/crm-vision.aspx

martes, 18 de junio de 2013

Que cambiará en la próxima Release

Hay vientos de cambios, todo cambio incluye nuevos desafíos y beneficios. Ayer Microsoft ha publicado un artículo muy interesante en el blog del equipo con el nombre “What’s Changing in the Next Release?”: http://blogs.msdn.com/b/crm/archive/2013/06/17/what-s-changing-in-the-next-release.aspx

Allí se recogen dos enlaces con un resumen de los cambios que hay previstos para esta nueva release:

Que Cambiará en la próxima Release?: (http://msdn.microsoft.com/en-us/library/dn281891.aspx)

  • El Endpoint de 2007 (el web service de 4.0) dejará de existir. Toda llamada a Web services de 4.0 en CRM 2011, deberá ser modificado al nuevo endpoint.
  • Dejará definitivamente de estar soportada la famosa carpeta “ISV”
  • Plugins y custom workflow activities de 4.0, dejarán de funcionar, es necesario migrarlos
  • Todo javascript que llame a objetos de 4.0, deberán ser migrados a 2011.
  • Cambios realizados de forma no soportada en el DOM por medio de javascript es muy posible fallen, ya que hay muchos cambios en el mismo
  • Muchos elementos del Ribbon dejarán de existir (por ejemplo <ComboBox>, <DropDown>, <Gallery>, <TextBox>, etc.)
  • La presencia de Lync, solamente estará disponible en los grids y subgrids (no mas en los formularios)
  • El “Workplace" (Área de trabajo) dejará de ser configurable por cada usuario
  • Las reglas de detección de duplicados dejarán de ejecutarse en la creción/actualización de registros. Solamente quedará disponible la detección masiva de registros.

Y en cuanto a arquitectura los cambios previstos son: (http://technet.microsoft.com/en-us/library/dn265924.aspx)

  • Dejará de estar soportado:
    • Windows XP para ejecutar el cliente de Outlook
    • Microsoft Office 2003 para ejecutar el cliente de Outlook
    • Email Router con Exchange 2003 o con Microsoft Exchange Server 2007 WebDAV protocol
    • Internet Explorer 7
    • Windows 2000 Server Active Directory

Tener cuidado con estos temas, para tenerlos siempre presente.

un saludo

 

     

sábado, 18 de mayo de 2013

Nueva versión del CRM "Implementation Guide"



Hola, Microsoft ha publicado una nueva actualización del Microsoft Dynamics CRM 2011 Implementation Guide. Esta disponible para su descarga en el Download Center: http://www.microsoft.com/en-us/download/details.aspx?id=3621

El resumen de lo que incluye está en el siguiente enlace: http://technet.microsoft.com/en-us/library/hh699811.aspx



Este documento recomiendo que lo tengan presente todos ya que es muy útil a nivel general para implentaciones de Dynamics CRM.

un saludo,

domingo, 28 de abril de 2013

CRM 2011 Testing Data Creation (nuevo: lookups)

codeplex-logo_thumb

Hola, he seguido añadiendo a mi librería de creación masiva de datos de pruebas. Como siempre, todo el código fuente y la solución de CRM completa esta aquí: https://crm2011testingdata.codeplex.com/

En mi última Release, añadí muchos nuevos tipos de campos, pero me dejé el mas “difícil” para el final. Ahora ya lo tiene, en la nueva versión (1.3.0.0) ya funciona con Lookps simplemente se añade el lookup y el nombre de la entidad relacionada y listo. Ejemplo:

28-04-2013 0-15-18

28-04-2013 0-15-50

La funcionalidad incluida incluye que simplemente se busca en los metadatos, el atributo principal utilizado como nombre de la entidad relacionada, y con el texto buscado, le crea la relación.

Para próximas releases incluiré:

  • Posibilidad de buscar por otros campos de la entidad relacionada (códigos, por ejemplo)
  • Creación automática de registros relacionados en caso de no encontrarse.

Saludos,

sábado, 20 de abril de 2013

Importación de árbol de temas

Existen ocasiones que nuestras implantaciones de Dynamics CRM, necesitamos implementar complejos arboles de temas (asuntos de los casos).

Hasta aquí, no hay problema, simplemente vamos al árbol, y creamos todos los asuntos que queremos, y no hay mayor problema.

El problema surge cuando queremos realizar las subidas a otros entornos, por ejemplo al de pre producción, y al de producción. Ahí nos encontramos que al exportar la solución con todas las personalizaciones para ser subidas a los otros entornos, no podemos incluir nuestro “complejo” árbol de temas.

Bueno, al final el árbol de asuntos de una entidad de CRM, un poco “rara” y no personalizable, pero con registros de información como las demás.

Voy a poner un ejemplo, para explicar como hacer una importación “masiva” del árbol de asuntos, en caso de tener un árbol muy grande. En este caso, imaginemos que tengo un árbol de asuntos muy grande, por continentes, países e incluso provincias en 3 niveles.

Lo primero es generar un CSV en Excel como lo siguiente:

image

En este CSV, el título es el texto del valor, y el tema primario, es el registro “padre” (para este ejemplo, los continentes). El único “truco” es que es necesario añadir una columna, sin la cual nuestra importación posterior no funcionará: “Máscara”, con el número “1”.

Luego describo los pasos a seguir para importar el Excel:

image

Seleccionar el fichero csv:

image

Seleccionar el delimitador del campos del CSV:

image

Asignación automática:

image

Seleccionar el tipo de registros a importar (Asunto):

image

“Mapear” el campo Máscara:

image

Siguiente:

image

Siguiente:

image

Finalizar:

image

Comprobar que la importación acaba correctamente:

image

Y finalmente tenemos nuestro “hermoso” árbol de asuntos:

image

Esto puede ahorrar mucho tiempo en la creación del árbol de asuntos en otros entornos, y evitar errores de la introducción. Haciendo un cálculo optimista, en el ejemplo anterior con unos 200 registros en el árbol de asuntos, si calculamos unos 10 segundos por registro si lo introducimos de forma manual, tardaríamos algo mas de media hora.

De esta manera podemos crear un gran árbol de asuntos de forma sencilla, rápida y segura.

Saludo,