martes, 16 de octubre de 2012

Modificando el campo “Fecha de creación” (createdon) en Dynamics CRM 2011

Muchas veces cuando tenemos importaciones o sincronizaciones de datos en CRM, teníamos el problema de que el campo automático de “Fecha de creación” (createdon) se rellenaba automáticamente con los datos de la fecha actual.
Esto provoca que los datos del CRM no sean los mismos que en el origen de la información. Hasta ahora había dos soluciones para esto:
  • Crearse un nuevo campo personalizado de tipo fecha para almacenar esta información
  • Actualizar de forma no soportada la fecha directamente en la base de datos SQL Server.
En CRM 2011, existe otro funcionamiento que permite actualizar este campo de forma soportada. Me parece una funcionalidad muy útil y necesaria. Para explicar esto, me baso en las soluciones propuestas por Vincent Zhong en el blog http://www.magnetism.co.nz/blog.aspx:
Intentaré resumir lo que plantea aquí. Por un lado, se plantea la solución de como actualizar este campo de tipo fecha por código:
   1: private static Guid ModifyCreatedOnDate()

   2:         {

   3:             DateTime thisYear = new DateTime(2012, 1, 24, 10, 30, 00);
   4:             DateTime lastYear = new DateTime(2011, 1, 24, 10, 30, 00);
   5:  
   6:              Entity contact = new Entity("contact");
   7:             contact["firstname"] = "Modify";
   8:             contact["lastname"] = "CreatedOn 2";
   9:             contact["createdon"] = thisYear;
  10:             contact["overriddencreatedon"] = lastYear;
  11:             return sdk.Create(contact);
  12:         }





How to Modify the Created On Value of Dynamics CRM 2011 Part 1


La idea es que al actualizar el campo “overrideddcreatedon”, en realidad lo que se actualiza es el campo “createdon” y la fecha actual (automática) se almacena en el campo “overrideddcretedon” (“Record Created On”). De esta forma, podemos simular que determinados registros fueron creados en otra fecha, sin perder por otro lado la fecha real de creación del registro.

Por otro lado, hay que tener en cuenta que este campo también puede ser modificado mediante el asistente de importación de .CSV estándar de CRM. Simplemente se debe añadir el “mapping” del campo de fecha del CSV al campo “createdon” ya que el campo “overrideddcreatedon” no está disponible para el mapeo.

Espero les sirva esta aportación, un saludo,

No hay comentarios:

Publicar un comentario