En la mayoría de los proyectos en los que he participado y que Dynamics 365 CE (aka CRM) estaba involucrado, en mayor o menor medida, hemos tenido que integrarnos con otros sistemas para cruzar datos entre ambos. Estas son algunas cosas que he ido aprendiendo y que me han ido enseñando (gente que sabe mucho mas de D365CE que yo) a lo largo de estos proyectos. Si estas leyendo esto y tienes algún tip mas, no dudes en ponerlo en los comentarios, !siempre será bienvenido!
No integrar datos si no es imprescindible
Esta primera recomendación parecerá algo obvio, pero no lo es. En mas de una ocasión (y de dos) me he encontrado con la necesidad de mover n cientos de miles de registros del sistema X a D365 CE (o lo que es lo mismo, a CDS) y que además, si una vez en nuestro sistema el dato se modificaba, este tenia que volver al sistema de origen actualizado. Y para ello planteaban procesos nocturnos… que voy a contar, reuniones de muchas horas con muchas personas ($$$) no técnicas decidiendo como hacerlo… y al tirar un poco del hilo, se ha descubierto que esos datos son solo de consulta, que no es necesario en realidad que el usuario de CRM interaccione con los datos mas haya de consultarlos.
Siempre que puedas evitarlo, no integres los datos. Que se queden en el sistema de origen. Si son datos de solo consulta, en D365 tienes opciones como las entidades virtuales, o tal vez puedes recuperar a demanda en el momento que necesites consultar esos datos montando algún servicio web.
Comprueba quien mantiene los datos
Si no tienes mas remedio que integrar, por que si necesitas que los datos estén en tu sistema, procura que sea algo del tipo «maestro-esclavo«, o lo que es lo mismo, que los datos solo se mantengan el el sistema de origen.
Si finalmente tu sistema tiene que ser una integración bi-direccional (los datos se pueden mantener en los dos sistemas), ¡animo!, y dedícale todo el tiempo necesario a pensar y diseñas antes de ponerte manos a la obra. Te aseguro que a medio/largo plazo terminaras antes que poniéndote rápidamente a implementar, y también te aseguro que el coste de pararte a pensar es menor que el de las reuniones que antes he comentado, y tendrá un retorno mucho mayor.
Comprobar plug-ins y Workflows sincronos
Una vez hemos visto que es necesario realizar la integración, tenemos que intentar que esta se realice con el mejor rendimiento posible. Por eso, hemos de comprobar que no exista ningún plug-in ni workflow que se ejecute de manera síncrona al insertar un registro en la entidad, ya que si es así, tendremos que esperar a que se realicen las tareas necesarias para cada uno de los registros antes de pasar a insertar el siguiente. En estas integraciones, 100ms en cada registro importan.
Eliminar la auditoria de la entidad
Si vamos a insertar un gran volumen de datos, mejor desactivar la auditoria de la entidad, ya que si no aumentaremos los volúmenes y en número de inserciones en CRM.
Desactivar las reglas de detección de duplicados
Cuidado con esto, queremos que el proceso sea lo más optimo posible y que cargue los más rápido posible.
Desactivar el Activity feed
No queremos tener un activity feed de una entidad que tenga integraciones con altos volúmenes. Por un lado, no aportarían información interesante, y por otro lado estamos aumentando el número de inserciones que ha de realizar CRM.
Carga en paralelo de registros
Os voy a ser sincero, en esta sección tenia puesto que había que lanzar procesos por lotes. Pero veo en la documentación de Microsoft que esto no es correcto, que es mejor lanzar varias peticiones individuales en paralelo. (https://docs.microsoft.com/es-es/powerapps/developer/common-data-service/api-limits)
Bonus: Cuida mucho el API LIMITS
Mucho cuidado con este tema, el licenciamiento de D365 limita el número de peticiones diarias a la API:
https://docs.microsoft.com/en-us/power-platform/admin/api-request-limits-allocations
Hasta aquí los consejos para la carga de datos en D365 CE, o como dice mucha gente, D365 CRM mi jefe me mata si ve que lo llamo así 🙂
¿tienes algún consejo más? No dudes en ponerlo en los comentarios.