Création ou mise à jour en une seule opération : Upsert

Les consultants techniques peuvent bénéficier encore une fois d'une nouveauté technique très intéressante de Microsoft Dynamics CRM puisque la fonction UPSERT est enfin implémentée dans le SDK de CRM, ceci depuis la version 2015 update 1. La fonction UPSERT (contraction d'UPDATE / INSERT) permet de réaliser une opération de création ou de mise à jour avec un seul message UpsetRequest, et ainsi nous simplifier les développements en déléguant au CRM la tâche de vérifier s’il faut créer ou mettre à jour l'enregistrement.

Le message UpsetRequest utilise les clés additionnelles pour l'identification de l'enregistrement, ceci afin de déterminer si un enregistrement existe ou non dans le CRM, donc :
§  Si la clé n'est pas mappée, un nouvel enregistrement est créé.
§  Si la clé est mappée, l'enregistrement existant est mis à jour.


Si vous n'êtes pas familier avec la notion des clés additionnelles, merci de vous référer à l'article Une nouvelle fonctionnalitépour gérer les clés métiers dans Microsoft Dynamics CRM 2/2

Ce message va être vraiment intéressant notamment en termes d'intégration des données et va nous permettre d'éviter de coder des requêtes intermédiaires pour savoir si un enregistrement est déjà synchronisé ou non avec le CRM. Nous allons donc laisser l'application décider à l'aide des clés additionnelles s’il faut faire une création ou une mise à jour des enregistrements.


Prenons l'exemple suivant dont nous allons exécuter le message UpsertRequest sur un enregistrement de type Compte qui a comme clé additionnelle le numéro de compte 12345. Si ce compte existe dans le CRM il va être mise à jour et s’il n'existe pas il va être créé.



Comme vous le remarquez dans le code ci-dessus, la réponse de la requête UpsertRespone contient un paramètre intéressant RecordCreated de type booléen qui permet de savoir si le Upsert a fait une création ou une mise à jour.

Avant de continuer, nous allons vérifier que le compte JAVISTA a bien été créé dans le CRM:


Maintenant, je vais lancer le même code encore une fois en rajoutant une description au compte:


Comme vous pouvez le constater dans le code ci-dessous, le paramètre RecordCreated indique cette fois-ci que le compte identifié par la clé additionnelle 12345 a été mise à jour.

Vérifions cela dans le CRM: 


Cette nouveauté est un vrai plus pour les consultants technique CRM. Il permet de simplifier l'écriture des développements. Cependant Il est préférable d'utiliser UpsertRequest uniquement lorsque vous n'êtes pas sûr que l'enregistrement existe, car l'utilisation de UpsertRequest réduit les performances par rapport à CreateRequest.

Aucun commentaire:

Enregistrer un commentaire