Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Plugin CRM 4.0 qui ne s'execute pas (Child pipeline vs Parent pipeline)

Symptôme

Si une action A dans CRM est déclenchée dans le cadre d'une autre action B, un plugin enregistré pour l'action A ne se déclenche pas.

Par exemple, si vous exécutez un plugin sur l'action de création d'une commande (donc enregistré pour le message Create de l'entité salesorder), cela fonctionne à la création directe d'une commande. En revanche le plugin ne s'exécute pas  lors de la création d'une commande déclenchée automatiquement suite à la conversion d'un devis.

image 

Explication

Le souci vient du fait que l'action A est le pipeline d'exécution principal alors que l'action B donne lieu à un pipeline d'exécution enfant du premier. Voici l'ordre d'exécution des deux pipelines :

image

Solution

Pour que le pipeline B déclenche l'exécution du plugin, il faut enregistrer le plugin en tant que Child Pipeline au moment de l'enregistrement.

Par exemple, en utilisant CRM Plugin Registration Tool (v2.1), cela revient à sélectionner Child Pipeline pour la propriété Triggering Pipeline à l'enregistrement du step comme suit :

image

Autre problème

Il faut savoir que lorsque vous exécutez un plugin dans un pipeline enfant, vous êtes dans un contexte un peu particulier. Si vous reprenez la figure 2 ci-dessus qui montre l'ordre d'exécution des deux pipelines imbriqués, vous constatez que le pipeline enfant s'exécute complètement alors que le pipeline parent n'est toujours pas terminé.

La transaction ouverte par le pipeline parent n'étant pas terminée au moment de l'exécution du pipeline enfant, il n'est pas possible d'invoquer le service web CrmService depuis le pipeline enfant. En effet, la transaction produit des locks sur la base qui empêche tout autre accès, même en lecture seule...

image

Microsoft recommande donc de ne pas se connecter à CRM dans un pipeline enfant pour lire ou mettre à jour des entités. Si vous avez besoin de le faire, la bonne marche à suivre et d'enregistrer votre plugin en mode asynchrone de façon à ce qu'il s'exécute bien après l'exécution du pipeline parent.
Cela revient à sélectionner Asynchronous pour la propriété Execution Mode au moment de l'enregistrement du step :

image

Pensez à vérifier que le service Microsoft CRM Asynchronous Processing Service est bien démarré sur le serveur CRM qui détient le rôle associé.

image

Pour rappel, en mode asynchrone, le plugin s'exécute au moment de l'exécution du pipeline enfant mais la subtilité est que le message est aussitôt envoyé dans une file d'attente sous la charge du service Microsoft CRM Asynchronous Processing Service qui l'exécutera en asynchrone, à un moment où les locks sur la base seront levés :

image

Dans le cas du mode asynchrone, si vous êtes en phase de développement et que vous avez besoin de déboguer le plugin, l'astuce consiste à attacher le process non plus à une instance de IE exécutant CRM, mais directement à l'instance du service Microsoft CRM Asynchronous Processing Service.

Quelques liens intéressants sur le sujet :

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: vendredi 19 septembre 2008 09:15 par bianca
Classé sous :

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01