viernes, 24 de abril de 2015

Utilización del “Update” para mensajes especiales con CRM 2015 Update 1

Hoy seguimos con temas nuevas en la nueva versión Update 1.

Esta es una de las versiones de Dynamics CRM con la que estoy mas entusiasmado, debido a todos los cambios en la SDK que nos permiten mejorar (y mucho) nuestros desarrollos.

Una de las nuevas funcionalidades de esta SDK, es las posibilidad de asignar registros y cambiar sus estados simplemente utilizando el método “Update”.

Antiguamente (hasta CRM 2015 o versión 7.0) para asignar un registro o actualizar un estado del mismo, se debían llamar a mensajes específicos para esto por ejemplo:


El tema es que si queríamos actualizar un registro y luego asignarlo y cambiarle un estado, debíamos hacer 3 llamadas al CRM (Update, Assign y SetState). Si intentabamos actualizar los campos de estado (statecode o statuscode)  o el del propietario (ownerid) simplemente no hacía nada, ni devolvía ningún error.

Con el nuevo Update 1 de CRM 2015, por fin podemos hacer asignaciones o cambios de estado, solamente con el método “Update”, lo que nos permite en una misma petición hacer lo que antes debíamos hacer en 3. Un ejemplo es lo que muestro a continuación:


Este tipo de funcionalidades es clave de cara a minimizar las llamadas a web services de CRM, optimizar el código y reducir los tiempos de latencia al servidor (sobre todo para Online).

En relación con los mensajes que se disparan como mensajes de los Plugins se puede ver a continuación como cambian los mismos con este nuevo enfoque:


Si se llama al Assign, se dispara el Assign y el Update. Si se llama el Update, solamente se dispara ese mensaje.

espero les guste este análisis y puede serles útil.

un saludo


martes, 21 de abril de 2015

Nuevo libro CRM field Guide publicado

The CRM Field Guide
En los últimos meses, he tenido el placer de participar junto a un enorme grupo de MVPs de CRM, en la escritura de un libro en común.
Gracias a la organización de Julie Yack y su equipo, han conseguido coordinar a todos para conseguir un excelente libro final.
El libro de llama CRM Field Guide y esta disponible aquí:
El listado de los autores es el siguiente: Joel Lindstrom Feridun Kadir David Yack Carsten Groth Scott Sewell Larry Lentz Jukka Niiranen Jakub Skalbania Leon Tribe Rhett Clinton Ramon Tebar Giorgio Garcia-Agreda George Doubinski Roberto Nocera Jason Lattimer Mark Smith David Berry Demian Raschkovan Gus Gonzalez Gustaf Westerlund Dylan Haskins Jerry Weinstock Julie Yack
Y la descripción de todos los capítulos es la siguiente (personalmente, he escrito el capítulo 21, relacionado con Data Management):

Chapter 1 - Hello, I’m CRM 2013

Microsoft Dynamics CRM 2013 represents a major upgrade and in this chapter we will explore some of the new features at a high level. For many of these features this chapter will simply set the stage for a much more detailed discussion later in the book where full chapters will be dedicated to a much deeper take on that feature.
Chapter 2 - Building the Foundation
There are a few common things across Dynamics CRM and some basic architecture to follow. All of this is explained in much greater detail throughout the course of this book, but this chapter is here for some base knowledge for reference. It is important to know what CRM can do right out of the box before you head off changing it, so let’s get a firm foundation.
Chapter 3 - Marketing Automation Best Practices
This chapter takes you through the process of creation and management of Marketing Campaigns and their components. Included are Marketing Lists, both Static and Dynamic, Quick Campaigns, Marketing Campaigns, and Tracking Responses. Sales Literature, Planning Tasks, Financials, Campaign Activities, and linking to Products in the Product Catalog, all parts of Marketing Campaigns, are covered as well.
Chapter 4 - Sales Automation
Sales Automation is a methodology that automates sales business tasks such as lead management, account and contact management, knowledge sharing, order processing and tracking, customer management, sales forecast analysis, and employee goals. Microsoft Dynamics CRM 2013 offers a lot of features out-of-the-box that already include a full sales-force-automation process that could be extended through simple and complex customizations.
Chapter 5 - Service Management
This chapter describes the out-of-the-box functionality provided by Microsoft Dynamics CRM 2013 for managing service. Service functionality falls into two broad areas, tracking customer issues, complaints or other requests for service and scheduling for managing customer appointments. All of the entities related to service management are described as well as how they are connected along with examples of usage. These include case, contract, subject, article, service, service activity, facility/equipment, resource group, site, user, queue, article template, contract template, and business closure records. After reading this chapter you should have a good understanding of the service management capabilities and whether it is a good fit for your organization’s needs. You should be in a good position to decide whether you need to invest in customization or development to extend the features for your requirements or if the out of the box functionality is sufficient.
Chapter 6 - Service Management Leo
This chapter explores The “Leo” release of Microsoft Dynamics CRM 2013 (Microsoft Dynamics CRM 2013 SP1 for on-premises and Microsoft Dynamics CRM Online Spring ’14 for online) which adds new customer service features that considerably extend the capabilities of service management.
Chapter 7 - Extending Service Scheduling
Consider you are working in a company where both mobile as well as desktop users are using Microsoft Dynamics CRM. You are expecting a modern, agile and flexible concept of working hours as well as service scheduling feature. That is what this chapter is all about. Find concepts and strategies for extending the out-of-the-box feature “working hours” and turn it from a static into a dynamic model you can use in your daily business – working in your office as well as being a mobile worker communicating and interacting with your office.
Chapter 8 - Building Process Flows
They are manual, nearly impossible to script and difficult to control in code. And yet business process flows are winning the minds of customizers and developers alike. Maps, guidelines, blueprints, visualizations – call them what you please; they take a swing at traditional data-centric CRM design and focus on outcomes rather than transactions. Learn how to build business process flow across multiple entities and how to use multiple business process flows per entity, as well as how to manipulate flows programmatically, how to secure and add additional flexibility to them with roles; how to package and export for re-use.
Chapter 9 - Customizing Entities and Forms
This chapter covers the new customization options available in Dynamics CRM 2013. CRM 2013 radically changes the customization options available to the system customizer. The user interface is flatter, with menus and navigation bars hidden by default, resulting in significantly greater amounts of form real estate. To optimize the user experience, the system customizer must know how to take advantage of the new form layouts and use the new form controls, like Business Process Flow, combined address control, and the activity/notes pane.
Chapter 10 - JavaScript for the BA
Out-of-the-box Dynamics CRM 2013 gives users more ways to view and change data than ever before. Even with all the existing tools like quick view forms, workflows and portable business logic you still might find instances where you need a little something more to get the job done. Client side scripting can work wonders but isn’t always the best solution depending on the circumstances. It can be even more confusing to those CRM administrators who don’t write code for a living. The goal of this chapter is to provide some background on appropriate use of JavaScript along with some syntax and troubleshooting fundamentals while wrapping up with some real world examples.
Chapter 11 - Designing a Great User Experience
Customizing CRM is not just about adding entities and fields or developing new technical features for the system. In order to drive user adoption for CRM it is crucial to pay close attention to how the users will interact with the system, what information is presented to them and how they can be guided through the processes that are to be managed via the CRM system. This chapter explores the key components of Dynamics CRM that are available to the system customizer and provides practical guidance on how to best leverage them for designing a frictionless user experience - without writing a single line of custom code.
Chapter 12 - Display Your Data
One of the main goals of a CRM system is collect data but more important is how you can read and analyze that data. This chapter gives some basis on how to communicate data in a visual way with Dynamics CRM. It starts from the standard capabilities for dashboarding and reporting then moves on to exploring advanced topics with Power View and Power Pivot and discusses concepts of data warehousing. This chapter is a guide for the reader from basics to much more complicated examples.
Chapter 13 - Report Development
Reporting and visualization of data within CRM is crucial to give users tools to view and understand data from within CRM. This chapter identifies the various tools available within CRM for reporting as a context for understanding where custom reporting using SSIS provides unique value. The majority of the focus is on setting up and building your first SSIS – both as an on-premise CRM user with access to CRM’s SQL database and the filtered views or as a CRM Online user developing reports using CRM’s native data query language, FetchXML. The chapter wraps up with deploying the report and a discussion on security – along with simple enhancements that allow your report to work with Advanced Find and hyperlinks to make it interactive.
Chapter 14 - Social CRM
This chapter address the differences between internal and external social and the role that Yammer plays in addressing the internal social of an organization. It answers the question, “what is Yammer?” and the elements that are included in the application. Step by step setup and configuration of Yammer and Dynamics CRM is covered as well as the setting up of “rules” and how they work with auto posting. The chapter then moves on to using Yammer with Dynamics CRM 2013 and gives examples of its application across department. It stress the importance of company culture with the implementation of Yammer in an organization. The chapter concludes with a list of resources in the SDK and also a code example of embedding external Yammer feeds into a CRM dashboard.
Chapter 15 - CRM Server Optimization and Maintenance
This chapter covers a wide range of optimization, maintenance and monitoring topics that should help you towards understanding the scope of managing a Dynamics CRM infrastructure, as well as its related technologies such as Microsoft SQL Server and Internet Information Services (IIS).
Chapter 16 - Upgrade 2011 to 2013
In this chapter we explore upgrading to Dynamics CRM 2013 from an earlier version. CRM 2013 is a major upgrade, and we cover what you need to do to upgrade your configuration to take advantage of new functionality, and how to make your upgrade as painless as possible.
Chapter 17 - Security Model
Today’s global business challenges the traditional organization structure as people form dynamic teams to work on individual opportunities or other data in CRM. Securing data is a key requirement in virtually all CRM projects. Data security requirements often cover a broad spectrum of needs from just keep non-users from seeing it, all the way to complex rules that are challenging to implement in a non-dynamic security model. Architecting a security model is all about trading off and ensuring the right level of protection with the least amount of friction that slows down the user from doing their job. And of course ensuring the security design implemented doesn’t slow down the system any more than necessary.
Chapter 18 - Taking CRM on the Road
Microsoft Dynamics CRM has seen quite a transformation over the past few years. It used to be that Dynamics CRM was wearing a business suit and used only the inside of an office. Then with CRM 4.0 and 2011 it took off its necktie with IFD, but you still had to use it on a laptop or desktop computer. Now it can be used on virtually any device, including computers, both Windows and Mac, tablets like iPads and Microsoft Surface, and smartphones. CRM has traded its business suit for hiking boots and has hit the road. You can now use it from wherever you work and on virtually any device. In this chapter we are going to explore the ways to use Microsoft Dynamics CRM on modern devices, and what you should do to get the most out of CRM on these devices.
Chapter 19 - Emails, Appointments Synchronization Overview
This chapter explores how CRM and its spin-offs in the xRM realm deal with trying to understand an organization’s relationship with their customers, members or other external parties. Part of this is of course the structured data in the form of fields that are contained in the account and contact forms. However, a large part of this is also trying to understand and store the communication that people in these organizations have with all these external customers, members etc. and their respective contacts. For this reason many activities have been created in CRM that allow for storing of this data, most notably email. The purpose of this being to create transparency within an organization of who is communicating with whom, in regards to what, and what the message is.
Chapter 20 - Server Side Sync
As discussed in the previous chapter, the synchronization of activities between Microsoft Dynamics CRM and Microsoft Exchange (and other compatible email servers) is one of the most important features of a CRM system. The focus of this chapter is to explore the new email profiles capabilities in detail as well as Server Side Sync, a functionality that we have all been waiting for for years. In this chapter we will tackle the subject from multiple angles, we will focus on the why, the what, and the how, and we will cover common Server Side Sync troubleshooting techniques.
Chapter 21 - Data Management
This chapter explains different approaches to Data manipulation (initial loading, synchronizing existing data, updating existing data looking for criteria, etc.), with real examples and time analysis to understand where the improvement points are. Based on a data example of 100,000 records and using the standard features and Dynamics CRM SDK you can understand time differences between CRM Online and On-Premise, and loading system or custom entities. It concludes with learning which solution to adopt for any scenario you need in the real world.
Chapter 22 - Dynamics Connector
Become an integration hero without a single line of code. In this chapter you will learn what a Dynamics Connector is and how you can use it to integrate systems in your CRM deployments. We will cover the introduction to integration approaches and briefly discuss when you should consider using the Connector. Then I will delve deeper into Connector for Dynamics architecture and its components, as well as supported integration types. Once finished with the introductions we will get our hands dirty with setting up real integrations, customizing maps and customizing the Connector. Read this chapter to get deep knowledge of what the Connector for Microsoft Dynamics is and how to use it.
Chapter 23 - Workflow and Dialogs for the BA
The chapter introduces the reader to the concept of processes in Dynamics CRM 2013; automated routines used -to assist with a business’ work processes. The focus of the chapter is workflows and dialogs, with the other two process types: Actions and Business Process Flows, being dealt with elsewhere in the book. The steps involved in creating workflows and dialogs, the method in which they run and real-world examples are explored.
Chapter 24 - No Code Business Rules
At the heart of every CRM implementation is a boat load of business requirements, many of which are implemented by one or more business rules. Generically, a business rule is often one or more simple conditions that must be true and when they are one or more actions occur. CRM comes out-of-the-box with a number of business rules implemented that are expected to meet a large number of business needs. Many of these can be customized so they are tailored to fit more specific project needs. Beyond that, developers can use code to implement client side rules with JavaScript or server side rules with CRM extensions like plug-ins. This chapter explores the options, customizations and use of the out of the box features and gives scenario examples for their use.
Chapter 25 - Real time Workflows
Workflows in CRM have for a while been a powerful way to automate tasks that would otherwise be tedious for users or to ensure consistency in processes. Workflows however were limited to being able to run in the background. While this works great and makes sense for long running processes that could take months, it is not ideal when you desire the user to see results immediately. For these needs CRM projects turned to developers to create plug-ins that had the ability to run real time. While plug-ins are powerful, and still have a place for many small tasks, using a workflow to define the steps would be adequate if the workflow simply could run immediately. As of CRM 2013, workflows can now be configured to be Background (like they previously ran, asynchronously) or Real Time (synchronous like plug-ins).
Chapter 26 - Solutions
Life in the software world is changing rapidly as we now find ourselves in a paradigm driven by approaches like “Cloud-First” or “Online-First”, these approaches are being adopted by software vendors both large and small. The benefits of these strategies are vast, not least of which is the ability to be far more agile with product enhancements, in order to adapt and survive in today’s competitive landscape. Microsoft has been clear for some time now that “Cloud-First” is their approach of choice with Dynamics CRM Online leading the charge. We need to have a clear understanding of what is required to build and package Solutions in such a way that they can keep up with this rapid release cadence, as well as an understanding of what has changed to date in the Solution framework and what might change in the future, as the framework itself evolves to better handle the deployment of these changes.
Chapter 27 - Developers, Developers, Developers
Developers are integral engineers of the Dynamics CRM landscape. When our job is done best we are invisible. In this chapter, we'll look at the new and exciting enhancements in CRM 2013 and what they mean for us, and the relationship with consultants and other non-developers. From Real-time Workflows to jQuery, we'll cover everything you need to know to adapt to a changing development role.
Chapter 28 - Parature!
Turning your classic phone and email support strategy into a new social media friendly concept of offering support and services by adding and using features from Microsoft Parature – that´s what the chapter is all about. Find an introduction of Microsoft Parature and some of the new capabilities Microsoft Dynamics CRM can benefit from. Think of new service/support offerings your company can add by simply using the integration between Microsoft Parature and Microsoft Dynamics CRM. Read about Live-Chat, Social Network integration and new Knowledgebase capabilities and turn your customer care cost center into a customer loved profit center.
Chapter 29 - Curriculum Guide
The CRM Field Guide Volume Two offers you details not only on CRM fundamentals and extensibility points but also the tried and true best practices and strategies of the combined experience of some of the most recognizable global experts in the CRM industry. The challenge with the book is that it is potentially overwhelming in the content it contains at 900+ pages in 28 chapters. This chapter answers “which chapter do I start with and in what order do I proceed?” The curriculum guide is based on eight personas and one environment. The most relevant chapters for each discipline are organized in recommended reading sequence.

sábado, 18 de abril de 2015

Utilizando el nuevo Seguimiento de Cambios (Change tracking) en Update 1

Hola, sigo probando el Update 1 (Carina), y hoy voy a mostrar como utilizar el Change tracking.

El change tracking ya esta documentado en la nueva versión de la SDK (aún en preview) aquí:

La idea del Change Tracking, es recoger los cambios producidos en una entidad, con el objetivo de sincronizarlo con otro entorno. Solamente puede ser utilizado por SDK, y hoy os paso un ejemplo de esto.

Para habilitar esta funcionalidad, primero se debe ir a CRM y activar en la entidad el Change Tracking:


La idea de ejecución de SDK, es muy simple, podemos consultar una entidad, y pedirle los cambios. El código es como el siguiente:

               RetrieveEntityChangesRequest req = new RetrieveEntityChangesRequest();
               req.EntityName = "contact";
               req.Columns = new ColumnSet(true);
               req.PageInfo = new PagingInfo()
                   ReturnTotalRecordCount = true,
                   Count = 1000,
                   PageNumber = 1
               RetrieveEntityChangesResponse res = (RetrieveEntityChangesResponse)service.Execute(req);

               for (int i = 0; i < res.EntityChanges.Changes.Count;i++ )
                   if (res.EntityChanges.Changes[i].Type == ChangeType.NewOrUpdated)
                       NewOrUpdatedItem accion = (NewOrUpdatedItem)res.EntityChanges.Changes[i];
                       Entity record = accion.NewOrUpdatedEntity;

Ahí como se ve, podemos pedir los datos paginados, y luego leer los resultados que finalmente son entidades. Además puedo pedir una serie de columnas, o todas.

Este ejemplo, me devolverá todo lo que ha cambiado, pero os estaréis preguntando… ¿como filtro por fechas? para eso hay un parámetro adicional en el “Request” con el nombre “DataVersion”. El Data versión, lo podemos recoger por ejemplo de una primera ejecución del código y recogiendo el “DataToken” de la respuesta (me devuelve 17 cambios):


Vuelvo a ejecutar el mismo código, pero esta ver añadiendo como DataVersion el valor “647621!04/17/2015 23:21:06”:


Como se puede ver, ahora no devuelve ningún cambio, y me devuelve un nuevo DataToken. Si voy al CRM, y hago cualquier cambio en los contactos, básicamente me creo un contacto:


Vuelvo a ejecutar el mismo código y tengo el nuevo cambio:


El campo DataVersion esta relacionado con el timestamp del registro y nos permite hacer sincronizaciones con otros entornos, guardando el último y así facilitar las mismas.

Espero les haya gustado.

un saludo


miércoles, 8 de abril de 2015

Usando el nuevo método “Upsert” en Dynamics CRM 2015 Update 1

Sigo con lo nuevo de la actualización de CRM. Hoy vamos a hablar de una funcionalidad que ya muchos de ustedes seguramente hayáis utilizado en el pasado, desarrollando vuestros propios códigos.

En la funcionalidad de “Upsert”. La idea es que definiendo unas claves, se pueda enviar una petición a CRM de actualización de un registro, y si no es encontrado con dichas claves, se realice una creación.

Antiguamente había que hacer varias peticiones a Dynamcis CRM para hacer esto, básicamente, una consulta de si existe el registro, y una bifurcación “IF” que dirigía a una creación o actualización.

La nueva versión ya trae un mensaje de tipo “UpdateRequest”, que nos facilita la vida e incremente además el rendimiento ya que se reducen las peticiones a la plataforma.

Para identificar lo que les estoy hablando, vamos a ver un ejemplo de como se podría desarrollar un “Upsert” en el pasado:

QueryByAttribute query = new QueryByAttribute("contact");
"dar_codigo", "1");
EntityCollection results=service.RetrieveMultiple(query);

if (results.Entities.Count == 1)
Entity contactoUpdate = new Entity("contact");
"firstname"] = "1-name";
contactoUpdate.Id = results.Entities[0].Id;
Entity contactoUpdate = new Entity("contact");
"firstname"] = "1-name";

Ahora con la nueva funcionalidad se podría hacer directamente así:

Entity contacto = new Entity("contact");
"dar_codigo", "1");

contacto["firstname"] = "1-name";
UpsertRequest req = new UpsertRequest();
req.Target = contacto;
UpsertResponse res=(UpsertResponse)service.Execute(req);

Como puede verse, es mucho mas simple, ya que en una sola llamada resolvemos todo. Obviamente nos estamos aprovechando de la  nueva funcionalidad de definición de campos clave externos:

Finalmente la respuesta de esta mensaje que es de tipo “UpsertResponse” nos da información de si el registro se ha creado o si se ha actualizado uno existente:



Espero les sirva para hacer vuestros códigos mas limpios, eficientes y bonitos Guiño


lunes, 6 de abril de 2015

Nuevas opciones con los campos de Fecha en CRM 2015 Update 1

Una de las nuevas funcionalidades que nos ofrece la nueva versión de CRM es la posibilidad de trabajar con campos de tipo fecha que sean independientes a la zona horaria del usuario que la introduce o consulta y la posibilidad de trabajar con campos de tipo fecha de solo fecha (sin horas).

Para entender mejor esto, lo ideal sería explicar como funciona hasta ahora Dynamics CRM en relación con los campos de tipo Fecha/Hora. Hasta ahora, los campos siempre tenían en cuenta la zona horaria del usuario que la introduce. Al introducirse un valor en un campo de fecha hora, este se almacena en la base de datos interna de CRM como en formato UTC, aplicando el desplazamiento horario de la zona horaria del usuario. Al volver a consultar este valor nuevamente ya sea por FilteredViews, SDK, vistas, formularios… Dynamics CRM aplica el desplazamiento horario del usuario nuevamente. Es decir, para los usuarios es transparente el tema de los desplazamientos horarios, simplemente rellenan valores y se los enseña transformados para su zona horaria local.

La zona horaria de los usuarios de define en las opciones personales del usuario:


Con esta funcionalidad estándar se disponía por ejemplo de la posibilidad de que si se crea una Cita internacional, cada usuario lo vea en su horario local, lo cual es perfecto.

A pesar de esto, se “perdían” ciertas situaciones de negocio que debían ser tratadas de otras maneras por ejemplo:

  • Si hay un usuario de Argentina introduce una fecha/hora de una reserva de hotel en España por ejemplo a las 10:00, un usuario ubicado España que en entre a consultar esta fecha, vería que la reserva es a las 14:00 porque Dynamics CRM aplica el desplazamiento horario que se le aplica.
  • Si se introducen datos legales de Contactos por ejemplo de sus fecha de Nacimiento, estas fechas en realidad no deberían almacenarse con un horario determinado, ya que solamente tienen una fecha. Si se mantenía esto, podía darse la situación que una persona tenga distintas fechas de nacimiento, al aplicarse los desplazamientos horarios de los diferentes usuarios.

Estos dos son solo dos ejemplos de situaciones que podían darse antes, y que la solución no era sencilla. Muchas veces se ignoran estos problemas en la actualidad simplemente porque todos los usuarios del CRM están en el mismo país o en la misma zona horaria, pero en caso de cambiar las opciones personales, podrían tener problemas. Seguramente si miráis en vuestras implementaciones, si cambiáis la zona horaria del usuario, verías que muchos de los datos de fechas que se introducen, cambian sin tener que hacerlo.

Ok, en la nueva versión de CRM, podemos crear estos tres tipos de campos fecha:


  • Local del usuario: es el funcionamiento que se tiene en la acualidad
  • Solo fecha: solo almacena la fecha, sin conversión horaria. En la parte de la hora será siempre 12:00AM
  • Independiente de la zona horaria: se almacena fecha y hora, y todos los usuarios lo verán exactamente igual, sin conversión horaria.

Ahora vamos a ver como funcionan estos 3 campos. Primero me he creado un campo con cada tipo de comportamiento en el formulario de contactos:


Introducimos unos valores iguales en los tres campos:


Cambiamos la zona horaria del usuario en las opciones personales:


y lo que obtengo es lo siguiente:


Como se puede ver, el que aplica la hora del usuario, no solo ha cambiado de horario por el desplazamiento, sino que incluso ha cambiado de día!

Mientras tanto, los otros dos, han quedado igual. Este simple ejemplo muestra el potencial de este tipo de comportamientos nuevos en los campos de fecha.

Desde hoy, empezar a pensar que tipo de comportamiento vais a introducir en vuestros campos de tipo fecha, ya que es una decisión que no se puede cambiar después y que tiene muchas consecuencias.

un saludo!


sábado, 4 de abril de 2015

Edición de registros en Excel Online CRM 2015 Update 1

Sigo enseñando algunas de las nuevas funcionalidades de la nueva versión online de Dynamics CRM 2015 (Update 1).

Esta funcionalidad es la de la posibilidad de consulta y edición de registros sin salir del CRM, utilizando Excel Online. La idea es simple, aprovecharnos de Office365 y la posibilidad de editar documentos online en el navegador, para luego importarlos y actualizar CRM.

Esta funcionalidad comenzaría con el botón “Abrir en Excel Online” disponible en las vistas:


Y nos va a aparecer este error:


Tranquilos, esto ocurre, porque no hemos configurado el Sharepoint. Lo configuramos:


Luego de configurar la integración con Sharepoint Online, podemos exportar a un Excel Online una vista y se vería de la siguiente manera:


Desde aquí podemos hacer cualquier tipo de edición en el propio Excel Online, y darla a “Save changes to CRM”:


Con un solo click ahí, aparecerá la siguiente ventana:


De esta manera sencilla, se pueden editar registros como lo hacíamos antes en Excel, pero sin salirnos del entorno de CRM. No llega a ser un “Inline edit”, pero para ediciones masivas de datos, es súuuper facíl, cómodo y rápido.


martes, 24 de marzo de 2015

Integración Dynamics CRM 2015 con Sharepoint

Hola a todos, hoy vengo a compartirles un artículo que he publicado en la revista compatiMOSS:

La revista compartiMOSS, es una revista dedicada a Sharepoint, de publicación trimestral. La revista la la dirigen una serie de MVPs de Sharepoint, que algunos tengo el placer de conocer, y que son:

Es una revista a la que sigo y de la cual aprendo mucho de un área que no es mi especialidad (Sharepoint) pero que cada día tiene mas puntos de integración con Dynamics CRM.

En el número 23 de la revista, de marzo de 2015, he colaborado con un artículo relacionado con la integración de Dynamics CRM con Sharepoint, que comparto aquí debajo.

Espero les guste, un saludo.

Dynamics CRM y Sharepoint

Dynamics CRM y Sharepoint son soluciones de Microsoft que tienen una vida ya de más de diez años cada una. Con el paso del tiempo, estas dos soluciones no solo fueron incrementando funcionalidades, sino que se han convertido en grandes plataformas donde poder implementar cualquier tipo de proceso de negocio.

Si bien las posibilidades son ilimitadas en ambas plataformas, por su naturaleza cada una lo hace de otras maneras, y por lo tanto existen escenarios de negocio que se acercan más a una o a otra.

Tradicionalmente se asocia al CRM con las relaciones con los clientes (Ventas, Servicio al cliente y Marketing) y Sharepoint se asocia más a entornos de intranets, gestión de contenidos o documental. Ambas dos asociaciones son correctas, pero desde mi punto de vista son algo simplistas si se tiene en cuenta las posibilidades que ambas plataformas pueden ofrecer.

Desde el punto de vista funcional, Sharepoint y Dynamics CRM tienen enfoques diferentes como se puede apreciar en la siguiente imagen:


Este gráfico explica a alto nivel los enfoques la forma de trabajo en una y otra plataforma, que permiten enfocar los datos y los procesos relacionados con los mismos de diferente manera.

Por qué integrar Dynamics CRM con Sharepoint

La integración de Dynamics CRM con Sharepoint nace de la necesidad de cubrir un GAP funcional en Dynamics CRM en cuanto a la gestión documental que dispone Sharepoint. En Dynamics CRM existe la posibilidad de añadir ficheros adjuntos, que son almacenados como “notas” relacionadas con las entidades de CRM. Pero estos ficheros adjuntos solo se permiten guardar en CRM y nada más. En Sharepoint en cambio podemos disponer de todo un abanico funcional y de colaboración mucho más rico.

Además del GAP funcional, existen un también un tema económico. En la “nube” se paga por uso y uno de estos conceptos es el espacio de almacenamiento. El almacenamiento de Dynamics CRM Online es mucho más caro que el almacenamiento de Sharepoint. Esto es importante, ya que en caso de enfrentarnos a un escenario en Dynamics CRM Online con gran volumen de ficheros adjuntos, se debería avaluar la repercusión del precio de estos adjuntos en cuanto al almacenamiento en la nube.

Arquitectura de integración lado servidor

La integración de la versión actual de Dynamics CRM 2015 con Sharepoint Online está bastante desarrollada aunque existen algunos puntos que deberían ser mejorados para garantizar una completa integración.

En versiones anteriores de Dynamics CRM la integración estaba basada en el lado cliente, en donde mediante un iframe apuntando a Sharepoint, se podía acceder a documentos allí almacenados desde un contexto de un registro de CRM. Esto significa que desde el navegador cliente, es el que directamente accede y se autentica contra el Sharepoint.

Desde Dynamics CRM 2013 Online, existe la posibilidad de integrar Dynamics CRM desde el lado servidor. Esto quiere decir que directamente será Dynamics CRM el que se encargue de conectar con Sharepoint, consultando y actualizado los datos que allí se almacenan. Esto permite que desde el navegador del cliente, solo se acceda a Dynamics CRM, haciendo la integración más transparente para los usuarios.

A continuación se enseñan estos dos tipos de escenarios:


Configurando Integración de documentos Dynamics CRM y Sharepoint

A continuación voy a enseñar paso a paso como configurar Dynamics CRM 2015 Online con Sharepoint Online. Para este ejemplo, he creado una trial de Office365, con una trial de Sharepoint y de CRM.

Lo primero que voy a hacer es crearme una biblioteca de documentos en Sharepoint, donde quiero almacenar los documentos a almacenar provenientes de Dynamics CRM:


Luego en Dynamics CRM en Configuración->Administración de documentos, podemos configurar toda la integración.


Y al habilitar la integración de Sharepoint basada en servidor, introducimos la dirección URL del sitio de Sharepoint:




Luego abrimos la configuración de administración de documentos, donde introducimos la url del Sharepoint y seleccionamos que entidades dispondrán de documentos:




Una vez configurada esta integración, desde un formulario de una Cuenta de CRM, podemos acceder a los Documentos relacionados:


Si es la primera vez que se accede a los documentos de esta Cuenta, aparece la siguiente ventana:


Al confirmar esta acción, se crea la carpeta en Sharepoint, relacionada con el registro de la Cuenta de CRM.

A partir de este momento, los documentos pueden añadirse en CRM, mediante formularios nativos, y estos documentos son almacenados en Sharepoint.


Integración de metadatos de Sharepoint con Dynamics CRM

Otra funcionalidad interesante relacionada con la integración de Dynamics CRM con Sharepoint, es la utilización de metadatos.

La creación de un documento en Sharepoint, permite que otros usuarios, incluso no usuarios de CRM, puedan interactuar con un documento. Una opción podría ser un flujo de aprobación o revisión de un documento. A continuación se detalla cómo se pueden crear metadatos en Sharepoint, que pueden ser consultados directamente en CRM.

Primero creamos una columna con un desplegable de estados, que quiero que se vean en Sharepoint



Así se ven estos registros que se han creado en CRM en Sharepoint:


La entidad que utiliza Dynamics CRM para integrar con Sharepoint se llama “Documentos de Sharepoint”, y si creamos en la misma un campo con el mismo nombre que el metadato creado en Sharepoint, Dynamics CRM se encarga de forma automática de integrar los mismos:


También añadimos esta columna en las vistas de la entidad, para que sea visible. Publicamos y ya tenemos disponible este campo en el listado de documentos:


Esta integración de atributos es muy interesante, pero hay que tener en cuenta que los tipos de datos que hay en Dynamics CRM y Sharepoint no es igual y se debe revisar qué tipo de metadato se puede mapear con qué tipo de campo con CRM. En este ejemplo se ha utilizado un atributo de tipo texto, que puede ser mapeado con cualquier metadato de Sharepoint.

Escenarios avanzados de integración

Lo explicado anteriormente, ofrece una serie de opciones configurables, que están muy bien, pero en muchos escenarios de negocio, las integraciones deben ser algo más complejas. Ya sea porque requerimientos funcionales no cubiertos o por requerimientos de seguridad.

Es por esto, que se abre un abanico de nuevas posibilidades que los propios entornos de Dynamics CRM y Sharepoint ofrecen. Como se comentaba al inicio, la madurez de los productos nos garantiza que “casi” todo requerimiento funcional se pueda conseguir, aunque a veces hay que valorar si los esfuerzos de desarrollo a dedicar para este tipo de extensiones funcionales son los adecuados.

El primero de los escenarios es el siguiente:


Desde Dynamics CRM, se pueden crear Plugins o actividades de Workflow, que hagan llamadas directamente a Sharepoint, o a un web service intermedio que conecte con Sharepoint.

De la misma manera, podría existir un camino inverso desde Sharepoint, hacia Dynamics CRM:


Desde el punto de vista de la interfaz de usuario, en Dynamics CRM se podría añadir un iframe en formularios o Dashboards que apunten a URLs de Sharepoint, o bien crear Recursos web HTML, que conecten directamente al punto REST y consulten datos de Sharepoint y se muestren.


Igualmente el camino inverso, en Sharepoint se podría añadir un iframe con una URL de cualquier registro de CRM, o desarrollar una App o un Webpart, que conecte con los servicios de Dynamics CRM.



Como puede verse, la integración de Dynamics CRM con Sharepoint, es sencilla de montar y configurar, pero la funcionalidad que ofrece es limitada. De todos modos la madurez de estas dos plataformas permite que se pueda extender a los requerimientos de negocio.

La integración de la gestión documental de Sharepoint en Dynamics CRM cubre un GAP funcional a CRM, y ofrece a Sharepoint la posibilidad de trabajo de documentos que ya vienen relacionados con entidades de negocio de Dynamics CRM.

De los temas que quedarían pendientes de montar, es el tema de la seguridad. En Dynamics CRM la seguridad en implícita, basada en roles de seguridad y en la ubicación jerárquica de los usuarios. En cambio en Sharepoint la seguridad es explícita en cada registro, y por lo tanto se debería tener que desarrollar algo para permitir que esta integración sea más sólida.

Demian Adolfo Raschkovan

Microsoft MVP | Dynamics CRM

Director Técnico | Infoaván Soluciones