Intégration Azure

Les applications Microsoft Dataverse prennent en charge l’intégration avec Azure. Les développeurs peuvent inscrire les plug-ins avec Dataverse qui peut passer les données de message du runtime, intitulées contexte d’exécution, à une ou plusieurs solutions Azure du cloud. Cela est particulièrement important, car Azure est l’une des deux solutions prises en charge pour communiquer le contexte d’exécution obtenu dans un plug-in à des applications métier externes. L’autre solution est la fonctionnalité d’accès au point de terminaison personnalisé externe à partir d’un plug-in inscrit dans le bac à sable (sandbox).

Azure Service Bus fournit un canal sécurisé et fiable pour la communication entre les données d’exécution de Dataverse et les applications métier externes basées sur le cloud. Cette fonction est particulièrement utile, car elle maintient les systèmes Dataverse ou autres serveurs Dataverse séparés synchronisés avec les modifications de données métier .

Éléments clés de la connexion

Les éléments clés qui implémentent la connexion entre Dataverse et Azure Service Bus sont décrits ultérieurement. Un schéma dans la section suivante illustre ces éléments en opération.

Contexte de données

Le contexte des données contient les données commerciales traitées dans le cadre de l’opération actuelle de Dataverse. Ce traitement a été initialisé lorsqu’une demande d’exécution d’une certaine opération a été effectuée par un utilisateur, un workflow ou une application sur la plateforme Dynamics 365. Le contexte de données est transmis à toutes les activités plug-ins ou de workflow personnalisé enregistrées avec le pipeline d’événements à exécuter sur la combinaison de demande et de table spécifique en cours de traitement. Le contexte de données est de type IPluginExecutionContext lorsque celui-ci est transmis au pipeline d’exécution d’événement et RemoteExecutionContext lorsqu’il est publié sur le bus des services.

Le contexte des données propre au message qui est publié sur Azure Service Bus peut être mis au format XML ou JSON, en plus du format binaire .NET par défaut. Cela permet l’interopérabilité entre plateformes où les clients non .NET hébergés sur Azure peuvent lire les données Dataverse du bus des services.

Important

Lorsque la taille de la charge HTTP entière dépasse 192 Ko, les propriétés suivantes sont supprimées :

Certaines opérations ne comprennent pas ces propriétés.

  • Si la taille de la charge est inférieure à 192 Ko une fois les informations supplémentaires supprimées, une propriété MessageMaxSizeExceeded supplémentaire est ajouté au BrokeredMessage adressé par le système. Cela indique que certaines données ont été tronquées.
  • Si la taille de la charge dépasse 192 Ko une fois les informations supplémentaires supprimées, une erreur se produit et le message n’est pas envoyé.

Pour obtenir des informations complémentaires sur les technologies décrites précédemment, consultez :

Plug-ins

Les plug-ins sont l’une des deux méthodes utilisées pour initier la publication du message contenant le contexte des données vers Azure Service Bus ; l’autre méthode étant une activité de workflow personnalisée. Il existe deux types de plug-ins inscrits asynchrones pris en charge par la fonctionnalité de connexion Dataverse-Azure : prêt à l’emploi et personnalisé. Dans les deux cas, il est préférable d’enregistrer le plug-in pour une exécution asynchrone pour de meilleures performances du système.

Un plug-in OOB compatible Azure est fourni avec Dataverse et peut être enregistré via l’outil Plug-in Registration. Ce plug-in s’exécute en toute confiance avec la plateforme Dataverse. Vous devez enregistrer une étape plug-in dans le pipeline d’exécution d’événement qui identifie la combinaison de message et de table qui déclenche le plug-in pour exécuter et effectuer une notification de publication. Une fois exécuté, le plug-in avertit le service asynchrone, via un service de notification de point de terminaison de service (IServiceEndpointNotificationService), pour publier le contexte actuel des données de requête sur Azure Service Bus.

Vous pouvez également écrire votre propre plug-in personnalisé, compatible Azure. Le plug-in personnalisé s’exécute en mode de confiance partielle dans le bac à sable. Un plug-in personnalisé peut lancer la publication du contexte de données sur le bus de services via le service de notification de point de terminaison de service. Ajouter du code pour invoquer ce service rend le plug-in « compatible Azure ».

Pour plus d’informations sur les plug-ins en général, voir Écriture d’un plug-in. Pour plus d’informations sur les plug-ins compatibles Azure, consultez Écrire un plug-in compatible Azure personnalisé.

Activités de workflow personnalisées

À l’instar des plug-ins, des activités de workflow personnalisées peuvent être écrites pour initier la publication du contexte actuel des données de message de demande sur Azure Service Bus à l’aide du service de notification de point de terminaison de service. Pour plus d’informations : Extensions de workflow

Service asynchrone

Une fois averti par le service de notification du point de terminaison de service, le service asynchrone gère la publication du contexte de données du message de demande actuellement traité par le pipeline d’exécution d’événements sur Azure Service Bus. Chaque publication est effectuée par une tâche système du service asynchrone. Un utilisateur peut afficher le statut de chaque tâche système à l’aide de la vue Tâches système de l’application web Power Apps.

Pour plus d’informations sur le service asynchrone, consultez Service asynchrone.

Bus de services Microsoft Azure

Le bus de services transmet par relais le contexte de données de message de demande entre les applications d’écoute de solution Dataverse et Azure Service Bus. Le bus des services assure également la sécurité des données de sorte que seules les applications autorisées peuvent accéder aux données Dynamics 365 publiées. L’autorisation des applications Dataverse de publier le contexte de données vers le bus des services et pour les applications d’écouteur de le lire est gérée par Azure Shared Access Signatures (SAS).

Pour plus d’informations sur le bus de services, consultez Service Bus. Pour plus d’informations sur l’autorisation du bus de services, consultez Authentification et autorisation du bus de services.

Solution Microsoft Azure

Pour que la connexion de Dataverse et d’Azure fonctionne, au moins une solution est nécessaire dans un compte de solution Azure Service Bus, où la solution contient un ou plusieurs points de terminaison de service. Pour un contrat du point de terminaison de relais, une application d’écouteur compatible Dataverse doit écouter activement sur le point de terminaison la demande Dataverse sur le Service Bus. Pour un contrat de point de terminaison de file d’attente, il n’est pas nécessaire qu’un écouteur écoute activement. Un écouteur est rendu compatible Dataverse en l’associant à l’assembly Microsoft.Xrm.Sdk de sorte que le type RemoteExecutionContext soit défini. Pour plus d’informations : Écrire un écouteur pour une solution Microsoft Azure

Dataverse prend en charge l’envoi des données d’événement à une solution Azure Event Hubs. Pour plus d’informations sur les hubs d’événements, consultez Utiliser les données d’événement dans votre solution Azure Event Hub.

Scénario Dataverse vers Service Bus

Identifions maintenant un scénario qui implémente les composants de connexion mentionnés précédemment. Comme conditions préalables, l’SAS a été configuré pour identifier Dataverse comme l’émetteur pris en charge et la solution du bus des services Azure a été configurée avec des règles visant à permettre à Dataverse de publier sur le point de terminaison sur lequel l’écouteur écoute.

Le diagramme suivant illustre les éléments physiques qui composent le scénario.

Scénario Dynamics 365 vers Service Bus.

La séquence des événements identifiés dans ce diagramme est la suivante :

  1. Une application d’écoute est enregistrée sur un point de terminaison de la solution Azure Service Bus et commence à écouter activement le contexte d’exécution distant Dataverse sur le Service Bus.

  2. Un utilisateur effectue une opération dans Dataverse qui déclenche l’exécution du plug-in prêt à l’emploi inscrit ou d’un plug-in compatible Azure personnalisé. Le plug-in lance une publication, via une tâche système de service asynchrone, du contexte de données de demande actuel sur le Service Bus.

  3. Les revendications publiées par Dataverse sont authentifiées. Le Service Bus transmet par relais le contexte d’exécution distant à l’écouteur. L’écouteur traite les informations de contexte et effectue une tâche professionnelle avec ces informations. Le Service Bus notifie le bus des services asynchrone d’une publication réussie et attribue à la tâche système le statut Terminé.

Création d’un contrat entre Dataverse et une solution Azure

Pour chaque point de terminaison de solution, vous configurez un contrat qui définit la gestion de ces messages de contexte d’exécution distant sur le Service Bus et la sécurité qui doit être utilisée sur ce point de terminaison. Les messages du Service Bus sont reçus sur un point de terminaison via l’un des contrats pris en charge répertoriés ici.

File d’attente

Un contrat de file d’attente fournit une file d’attente de messages du cloud. Avec un contrat de file d’attente, l’écouteur n’est pas obligé d’écouter activement les messages sur le point de terminaison. Pour les files d’attente, il existe une lecture destructive et une lecture non destructive. Une lecture destructive lit un message disponible dans la file d’attente et le message est supprimé. Une lecture non destructive ne supprime pas de message dans une file d’attente.

Le type de file d’attente pris en charge par Dataverse est appelé une file d’attente persistante. Les files d’attente persistantes ont une disponibilité des messages longue mais limitée, qui peut être spécifiée dans le code.

Contrat unidirectionnel

Un contrat unidirectionnel nécessite un écouteur actif. S’il n’y a aucun écouteur actif sur un point de terminaison, la publication vers le Service Bus échoue. Dataverse réessaient d’effectuer la publication à des intervalles de temps augmentant exponentiellement jusqu’à ce que la tâche système asynchrone qui publie la demande soit abandonnée et que son statut passe à « Échec ».

Contrat bidirectionnel

Un contrat bidirectionnel est similaire à un contrat unidirectionnel à ceci près qu’une valeur de chaîne peut être retournée de l’écouteur à l’activité de workflow ou de plug-in Dataverse personnalisée à l’origine de la publication.

REST

Le contrat REST est similaire au contrat bidirectionnel sur un point de terminaison REST.

Sujet

Similaire à une file d’attente sauf qu’un ou plusieurs écouteurs peuvent s’abonner pour recevoir des messages du sujet.

Event Hub

Ce type de contrat s’applique aux solutions du Hub d’événements Azure.

Important

Pour utiliser ces contrats, vous devez créer vos applications d’écoute avec la version 1.7 ou ultérieure du SDK Azure.

L’identification du type de sécurité utilisé par un contrat fait partie de la configuration du contrat. Un contrat peut utiliser la sécurité de transport, qui utilise Transport Layer Security (TLS) ou Secure Sockets Layer (SSL) (https).

L’authentification basée sur les revendications est utilisée pour l’accès sécurisé au Service Bus. La revendication utilisée pour l’authentification auprès de Service Bus est générée dans Dataverse et signée par le certificat AppFabricIssuer spécifié dans la base de données de configuration Dataverse.

Gérer les erreurs d’exécution

Si une erreur s’est produite après une tentative d’accès d’une publication au Service Bus, vérifiez le statut de la tâche système associée dans l’application Web pour obtenir plus d’informations sur l’erreur. Si le Service Bus est arrêté ou qu’un écouteur/point de terminaison est indisponible, le message actuel en cours de traitement dans Dataverse n’est pas publié sur le bus. Le service asynchrone continuera de tenter de publier le message de manière exponentielle en essayant de publier d’abord fréquemment puis à intervalles de plus en plus longs. En cas d’erreur Dataverse interne, aucune publication de message n’est tentée. En cas d’erreur de bus des services externe ou d’erreur réseau, la tâche système associée sera mise en attente.

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).