ND – Mise à jour des taux de change dans Dataverse, y compris dans Dynamics 365 (HR/FO)

    Updating Currency Exchange Rates in Dataverse (including Dynamics 365) by Nick Doelman

    @Thierry : Le deuxième sujet de Nick sur la mise à jour automatiques des devises via la Power Platform et Dataverse. Cet article bien que technique est intéressant car que l’on soit dans D365FO ou D365HR et que l’on travaille avec des devises, on aura forcément besoin à un moment donné de mettre à jour les taux, et voici ci-après une solution sympa établie avec la Power Platform de Microsoft.


    Mise à jour des taux de change dans Dataverse (y compris Dynamics 365)

    Une caractéristique peu connue de Dataverse (anciennement CDS) est la possibilité de gérer plusieurs devises. Il s’agit de l’une des nombreuses fonctionnalités standard de Microsoft Dynamics 365 également disponibles lors de la création de vos propres Power Apps basées sur Dataverse.

    Il y a quelque temps, j’ai publié un blog appelé Guide des devises dans le service de données communes (notez que le service de données communes est maintenant connu sous le nom de Dataverse ).

    Lorsque vous travaillez avec différentes devises dans Power Apps ou Dynamics 365, il n’existe aucun mécanisme prêt à l’emploi pour mettre à jour automatiquement les taux de change dans Dataverse. Vous devez le faire manuellement. Dans mon message d’origine, j’ai promis d’écrire des instructions avec une méthode pour maintenir les taux de change à jour automatiquement. C’est ici!

    Il s’agit en fait d’un processus assez simple grâce aux connecteurs personnalisés et à Power Automate .

    Dans mes recherches, j’ai obtenu de nombreux détails techniques dans ce post intitulé Conversion de taux de change avec Power Automate par son collègue MVP Ryan MacLean. Jetez un œil à cet article et à d’autres de Ryan, il y a beaucoup de bonnes choses là-bas!

    Obtenir les taux de change actuels via une API

    La première chose dont nous avons besoin est une source de taux de change. Bien qu’il y ait des connecteurs publiés, j’ai suivi le blog de Ryan et j’ai décidé d’utiliser un service gratuit appelé Exchange Rates API , basé sur la Banque centrale européenne.

    L’API est très simple, je peux lui passer un taux de change de base (dans mon cas, CAD) et il renverra une liste de devises avec les valeurs du taux de change actuel.

    Un moyen simple d’essayer l’API est d’utiliser Postman .

    1. Créez une nouvelle requête GET à l’aide de l’URL trouvée sur le site API des taux de change.
    2. Ajouter le paramètre « base » et une valeur d’un code de devise
    3. Appuyez sur Envoyer
    4. Afficher les résultats, les sont renvoyés sous forme de chaîne JSON

    Pour l’API de taux de change, nous n’avons besoin d’aucune clé d’authentification ou d’abonnement (pour l’instant) mais les hébergeurs du site demandent que nous mettions en cache les résultats afin de lui permettre de rester libre et ouvert. NE PAS ABUSER! Pour mon exemple, nous mettrons à jour les taux de change une fois par jour.

    L’étape suivante consiste à créer un connecteur personnalisé à l’aide de cette API. Encore une fois, j’ai suivi les instructions du billet de blog de Ryan pour créer un connecteur personnalisé pour cette API.

    À partir du portail Power Apps Maker, idéalement dans une solution, créez un nouveau connecteur personnalisé à partir du vide. Donnez un nom au connecteur et indiquez l’URL de l’API de taux de change (api.exchangeratesapi.io) dans le champ hôte.

    L’étape suivante est la sécurité, mais puisque l’API de taux de change est ouverte, nous pouvons ignorer cette étape.

    Dans l’étape de définition, nous devons ajouter une nouvelle action

    À partir de cette étape, nous insérons tout résumé ou identifiant d’opération qui a du sens. Une fois que nous avons ces valeurs, cliquez sur Importer à partir de l’échantillon.

    Dans ce cas, nous pouvons simplement couper et coller un exemple du site Web de l’API de taux de change.

    Voici l’URL que j’ai utilisée:

    https://api.exchangeratesapi.io/latest?base=CAD 

    Nous aurons l’URL de la requête GET et la requête (devise de base) définies dans notre connecteur personnalisé.

    À ce stade, nous pouvons créer une connexion et tester notre connecteur personnalisé (étape facultative).

    Devises dans Dataverse

    Maintenant que nous avons défini notre connecteur personnalisé et que nous avons un moyen de demander les derniers taux de change, l’étape suivante consiste à créer un flux Power Automate qui mettra à jour toutes les devises configurées dans notre environnement Dataverse. Avant de plonger, faisons un petit rappel sur la façon dont Dataverse stocke les devises.

    Si vous vous rappelez quand vous avez créé votre environnement Dataverse et ajouté une base de données, vous deviez choisir une devise de base.

    Pour ajouter et modifier des devises supplémentaires, vous pouvez accéder aux devises à partir de la section Entreprise du centre d’administration Power Platform pour l’environnement spécifique.

    Ici, vous pouvez ajouter de nouvelles devises et mettre à jour manuellement les taux de change. Notez que vous ne pouvez pas modifier la devise de base par défaut.

    Pour comprendre comment toutes ces devises fonctionnent sur les tables standard et personnalisées et comment elles affectent les valeurs des colonnes de devises, veuillez consulter mon article de blog sur les devises .

    Création d’un flux Power Automate pour mettre à jour les taux de change

    Maintenant que nous avons notre devise de base et une série de devises étrangères configurées dans Dataverse, nous pouvons créer un flux Power Automate à exécuter une fois par jour pour mettre à jour les devises.

    Voici un aperçu de haut niveau du flux, et nous approfondirons chaque étape.

    Pour notre déclencheur, nous voudrons exécuter ce flux une fois par jour. Vous pouvez choisir n’importe quel calendrier, mais par respect pour les administrateurs du site de l’API de taux de change, essayez de limiter les demandes au minimum.

    Nous voulons être en mesure de déterminer notre devise de base à envoyer à l’API. Nous pourrions facilement coder en dur cette valeur, mais comme je pourrais vouloir exporter ce flux dans le cadre d’une solution et le fournir à différents clients qui pourraient utiliser différentes devises de base, je préfère interroger Dataverse pour obtenir cette valeur.

    Nous pouvons déterminer la devise de base à partir de la table Organisations. Cette table ne doit jamais avoir qu’une seule ligne et elle contient la plupart des données métier par défaut d’une organisation. Nous devons utiliser une requête d’expansion pour obtenir le code de devise réel dont nous aurons besoin pour alimenter l’API. Une requête Expand est essentiellement un moyen d’extraire des colonnes d’une table associée à partir de ce que vous interrogez.

    La requête Expand:

    basecurrencyid($select=isocurrencycode)

    Même si la table Organisations n’a qu’une seule ligne et que nous avons spécifié dans notre nombre de lignes que nous ne voulons qu’une seule ligne, le flux créera toujours une action «Appliquer à chaque» si nous ne spécifions pas une valeur unique pour notre devise de base. Pour cette action, nous allons créer une variable et utiliser une expression pour sélectionner la première valeur.

    Voici l’expression, obtenez la première valeur de « code de devise » à partir de l’étape intitulée « Obtenir la devise de base »

    1first(body('Get_Base_Currency')?['value'])?['basecurrencyid/isocurrencycode']

    Maintenant que nous avons notre devise de base dans une variable, nous pouvons appeler notre connecteur personnalisé et interroger l’API pour obtenir une liste des taux de change. Dans cette action, nous transmettons notre devise de base.

    L’action renverra la liste des taux de change au format JSON. Power Automate propose diverses actions pour analyser ou convertir ces valeurs. Cependant, nous sommes en mesure d’utiliser les données dans le format qui nous est fourni.

    Maintenant que nous avons une liste de taux de change, nous devons les appliquer à nos devises dans Dataverse.

    Nous commençons par récupérer les devises, CEPENDANT, nous ne voulons que les devises de base «non» ou bien nous obtiendrons une erreur, car nous ne pouvons pas mettre à jour le taux de change de notre devise de base (1: 1). (J’ai appris à la dure)

    Pour cela, j’ai créé une requête FetchXML (en utilisant FetchXML Builder , bien sûr!) Et utilisé une jointure externe sur la table des organisations pour choisir uniquement les enregistrements de devises qui ne correspondaient pas à la valeur de la devise de base.

    Voici la requête FetchXML complète:

    <fetch>
      <entity name="transactioncurrency" >
        <link-entity name="organization" from="basecurrencyid" to="transactioncurrencyid" link-type="outer" alias="org" />
        <filter type="and" >
          <condition entityname="org" attribute="basecurrencyid" operator="null" />
        </filter>
      </entity>
    </fetch>

    Et voici l’étape pour récupérer les devises de Dataverse en utilisant ce FetchXML.

    Enfin, une fois que j’ai eu ma requête sur les devises autres que les devises de base, j’ai pu mettre à jour chacune d’entre elles (dans un bloc «Appliquer à chaque»), en extrayant le taux de change correspondant des données JSON renvoyées par le Get Exchange Rate mettre en doute.

    Voici l’expression pour faire correspondre le code de devise de la devise dans Dataverse à la valeur de la chaîne JSON qui a été renvoyée par l’API de taux de change et mettre à jour la valeur du taux de change.

    float(body('Get_exchange_rates')?['rates']?[items('For_Each_Requested_Rate')['isocurrencycode']])

    Le flux parcourra les devises activées.

    Vous pouvez tester le flux et vous assurer qu’il met à jour la liste des taux de change dans Dataverse et afficher les résultats dans la table des devises.

    En prime, vous pouvez activer l’audit sur la table Devise et voir les changements dans le temps des taux de change;

    Résumé

    Il existe de nombreuses fonctionnalités «cachées» dans Dataverse qui proviennent de Dynamics CRM d’origine ou qui sont des fonctionnalités de base de Dynamics 365 que vous pouvez utiliser dans vos solutions Power Apps. Grâce à Power Automate et à des connecteurs personnalisés, n’importe qui peut créer des extensions puissantes avec peu ou pas de code. La planification des flux Power Automate ajoute également une toute nouvelle dimension à la mise à jour automatique des données. Cet article a utilisé la devise comme exemple, mais vous pourriez potentiellement utiliser la même méthode pour des choses comme le cours des actions ou même la météo. Les possibilités sont infinies.

    NB Photo de couverture par John McArthur sur Unsplash


    @Thierry : Article technique mais tellement intéressant à pratiquer. Merci à Nick pour cet article sur la mise à jour automatique des taux de devises nous facilitant la vie au quotidien.


      Leave a Reply

      Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.