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í: https://msdn.microsoft.com/es-es/library/dn932130.aspx

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:

image

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):

image

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

image

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:

image

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

image

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

@demian_rasko

No hay comentarios:

Publicar un comentario