SlideShare une entreprise Scribd logo
1  sur  19
Développer un plugin
XrmToolBox
Tanguy TOUZARD
THANK YOU TO THE COMMUNITY SPONSORS!
Tanguy Touzard
• Travaille sur Dynamics CRM/365 depuis
15 ans
• Lead technique chez Javista depuis 7 ans
• Créateur de l’application XrmToolBox
• Auteur de 29 plugins
• MVP depuis 9 ans
Agenda
• Introduction / Historique XrmToolBox
• Principes de XrmToolBox
• Comment développer un plugin
• Développons un plugin ensemble
• Q&A
Introduction / Historique XrmToolBox
• Existence de plusieurs outils individuels
• Volonté d’améliorer la découverte et l’utilisation de tous les outils
• Volonté de sauvegarder/partager les connexions entre les outils
• Première tentative de méta outil : SolutionExtender => Echec!
• Rassemblement des outils existants dans XrmToolBox
• Mis en ligne en Décembre 2012
Principes de XrmToolBox
• Les plugins doivent:
• Automatiser des tâches répétitives
• View Layout Replicator
• Bulk Workflow Execution
• Contourner les limitations de l’application
• User Settings Utility
• Plugin Trace Viewer
• Exposer des traitements accessibles uniquement au travers du SDK ou
inexistants
• AutoNumber Generator
• Attribute Usage Inspector
Comment développer un plugin
• Avoir une idée ou un besoin!
• Installer le modèle de plugin dans Visual Studio
• Lire la documentation sur le portail
• Développer la logique métier et l’interface utilisateur
• Optimiser la mise en forme
• Implémenter les interfaces d’extension
• Tester, tester et tester!
• Créer un package Nuget
• Enregistrer son plugin sur le portail
Installer le modèle de plugin dans Visual
Studio
https://marketplace.visualstudio.com/items?itemName=TanguyTMVPCRM.XrmToolBoxPluginProjectTemplate-
19499
Lire la documentation sur le portail
• La documentation permet de
suivre les bonnes pratiques:
• S’assurer de la présence d’une
organisation connectée
• Réaliser les traitements longue durée
en mode asynchrone
• Lien
• https://www.xrmtoolbox.com/docum
entation/for-developers/
Développer la logique métier et l’UI
• En termes d’interface utilisateur, bien penser à personnaliser son
plugin avec un logo et un jeu de couleurs
Optimiser la mise en forme
• Pas de vrai responsive design
(WinForms)
• Utiliser des conteneurs
• Panel
• SplitContainer
• GroupBox
• DockContent
• Adapter les contrôles en fonction
du conteneur parent
• Anchors : Positionnement d’un
contrôle pas rapport au conteneur
parent
• Dock : Occupation de l’espace dans le
contrôle parent
Implémenter les interfaces d’extension
• Permet d’ajouter des informations dans l’interface de l’application
principale (optionnel):
• Lien vers le projet Github
• Lien vers PayPal
• Lien vers la documentation
• Ajout d’information de progression dans la barre de statut
• Documentation:
https://www.xrmtoolbox.com/documentation/for-developers/interfaces/
Tester, tester et tester!
• Pour vous aider, une checklist est disponible sur le portail:
• https://www.xrmtoolbox.com/documentation/for-developers/deploy-your-
plugin-in-plugins-store/plugin-validation-check-list/
Créer un package Nuget
• Seule manière de proposer un plugin dans le Plugins Store
• Le Plugins Store liste les packages Nuget référencés et validés sur le
portail XrmToolBox
• Possibilité de créer le package:
• Manuellement : Nuget Package Explorer
• Deploy your plugin in Plugins Store
• Automatiquement : Azure DevOps (ou autre build)
• Use Azure DevOps to publish XrmToolBox plugins
Enregistrer son plugin sur le portail
• L’enregistrement se fait à l’aide
de l’id du package Nuget
• Le portail récupère toutes les
informations à partir du
package
• Le processus de validation est
manuel, peut prendre du
temps.
Passons à la pratique!
Quelqu’un a-t-il une idée?
Passons à la pratique!
• Une idée? Afficher le contenu
XAML d’un workflow
• Pourquoi? Contrôler que les
champs dynamiques sont
correctement implémentés
• Comment?
• Afficher la liste des workflows
• A la sélection d’un workflow, afficher
le contenu XAML
Liste des
workflows
Contenu XAML du
workflow
Questions?
THANK YOU TO THE COMMUNITY SPONSORS!

Contenu connexe

Similaire à 365 saturday - Développer un plugin XrmToolBox

Développement et gestion de Logiciel Libre et Ouvert (LLO)
Développement et gestion  de Logiciel Libre et Ouvert (LLO)Développement et gestion  de Logiciel Libre et Ouvert (LLO)
Développement et gestion de Logiciel Libre et Ouvert (LLO)geomsp
 
Projet Confluence - Une base de données de type Wiki
Projet Confluence - Une base de données de type WikiProjet Confluence - Une base de données de type Wiki
Projet Confluence - Une base de données de type WikiMylneRoffi
 
Solutions Web « prêtes à porter » avec WordPress
Solutions Web « prêtes à porter » avec WordPressSolutions Web « prêtes à porter » avec WordPress
Solutions Web « prêtes à porter » avec WordPressStéphane Plante
 
La French Touch', l'open-source premium pour Trailblazers
La French Touch', l'open-source premium pour TrailblazersLa French Touch', l'open-source premium pour Trailblazers
La French Touch', l'open-source premium pour TrailblazersNicolas Vuillamy
 
Trailhead DX 19 Global Gathering
Trailhead DX 19 Global GatheringTrailhead DX 19 Global Gathering
Trailhead DX 19 Global GatheringThierry TROUIN ☁
 
Intranets et sites web en SharePoint 2013 avec le Cross Site Publishing
Intranets et sites web en SharePoint 2013 avec le Cross Site PublishingIntranets et sites web en SharePoint 2013 avec le Cross Site Publishing
Intranets et sites web en SharePoint 2013 avec le Cross Site PublishingFranck Cornu
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...ENSIBS
 
SharePoint - Benchmark des solutions de migration
SharePoint - Benchmark des solutions de migrationSharePoint - Benchmark des solutions de migration
SharePoint - Benchmark des solutions de migrationBenoit Jester
 
SharePoint Summit Quebec 2013 Session 10.3 - comment planifier et déployer le...
SharePoint Summit Quebec 2013 Session 10.3 - comment planifier et déployer le...SharePoint Summit Quebec 2013 Session 10.3 - comment planifier et déployer le...
SharePoint Summit Quebec 2013 Session 10.3 - comment planifier et déployer le...Nicolas Georgeault
 
Accéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.NetAccéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.NetFrédéric Vandenbriele
 
Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)LaNetscouade
 
Afterworks @Nouméa - DevOps, approche par container et Docker
Afterworks @Nouméa - DevOps, approche par container et DockerAfterworks @Nouméa - DevOps, approche par container et Docker
Afterworks @Nouméa - DevOps, approche par container et DockerJulien Chable
 
Acquia et Arte : Drupal Camp Paris 2013
Acquia et Arte : Drupal Camp Paris 2013Acquia et Arte : Drupal Camp Paris 2013
Acquia et Arte : Drupal Camp Paris 2013Cyril Reinhard
 
Projet de semestre / 1ére partie / partage de contenus multimédias
Projet de semestre / 1ére partie / partage de contenus multimédiasProjet de semestre / 1ére partie / partage de contenus multimédias
Projet de semestre / 1ére partie / partage de contenus multimédiasLaurent Moccozet
 
Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ ekino
 

Similaire à 365 saturday - Développer un plugin XrmToolBox (20)

Sp summit2014 session 10-2
Sp summit2014   session 10-2Sp summit2014   session 10-2
Sp summit2014 session 10-2
 
Développement et gestion de Logiciel Libre et Ouvert (LLO)
Développement et gestion  de Logiciel Libre et Ouvert (LLO)Développement et gestion  de Logiciel Libre et Ouvert (LLO)
Développement et gestion de Logiciel Libre et Ouvert (LLO)
 
Projet Confluence - Une base de données de type Wiki
Projet Confluence - Une base de données de type WikiProjet Confluence - Une base de données de type Wiki
Projet Confluence - Une base de données de type Wiki
 
Hello xcode 4 v2
Hello xcode 4 v2Hello xcode 4 v2
Hello xcode 4 v2
 
Hello Xcode 4 v2
Hello Xcode 4 v2Hello Xcode 4 v2
Hello Xcode 4 v2
 
Solutions Web « prêtes à porter » avec WordPress
Solutions Web « prêtes à porter » avec WordPressSolutions Web « prêtes à porter » avec WordPress
Solutions Web « prêtes à porter » avec WordPress
 
Introduction à HTML 5
Introduction à HTML 5Introduction à HTML 5
Introduction à HTML 5
 
La French Touch', l'open-source premium pour Trailblazers
La French Touch', l'open-source premium pour TrailblazersLa French Touch', l'open-source premium pour Trailblazers
La French Touch', l'open-source premium pour Trailblazers
 
Trailhead DX 19 Global Gathering
Trailhead DX 19 Global GatheringTrailhead DX 19 Global Gathering
Trailhead DX 19 Global Gathering
 
Intranets et sites web en SharePoint 2013 avec le Cross Site Publishing
Intranets et sites web en SharePoint 2013 avec le Cross Site PublishingIntranets et sites web en SharePoint 2013 avec le Cross Site Publishing
Intranets et sites web en SharePoint 2013 avec le Cross Site Publishing
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 
SharePoint - Benchmark des solutions de migration
SharePoint - Benchmark des solutions de migrationSharePoint - Benchmark des solutions de migration
SharePoint - Benchmark des solutions de migration
 
SharePoint Summit Quebec 2013 Session 10.3 - comment planifier et déployer le...
SharePoint Summit Quebec 2013 Session 10.3 - comment planifier et déployer le...SharePoint Summit Quebec 2013 Session 10.3 - comment planifier et déployer le...
SharePoint Summit Quebec 2013 Session 10.3 - comment planifier et déployer le...
 
Usine à site
Usine à siteUsine à site
Usine à site
 
Accéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.NetAccéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.Net
 
Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)
 
Afterworks @Nouméa - DevOps, approche par container et Docker
Afterworks @Nouméa - DevOps, approche par container et DockerAfterworks @Nouméa - DevOps, approche par container et Docker
Afterworks @Nouméa - DevOps, approche par container et Docker
 
Acquia et Arte : Drupal Camp Paris 2013
Acquia et Arte : Drupal Camp Paris 2013Acquia et Arte : Drupal Camp Paris 2013
Acquia et Arte : Drupal Camp Paris 2013
 
Projet de semestre / 1ére partie / partage de contenus multimédias
Projet de semestre / 1ére partie / partage de contenus multimédiasProjet de semestre / 1ére partie / partage de contenus multimédias
Projet de semestre / 1ére partie / partage de contenus multimédias
 
Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+
 

365 saturday - Développer un plugin XrmToolBox

  • 2. THANK YOU TO THE COMMUNITY SPONSORS!
  • 3. Tanguy Touzard • Travaille sur Dynamics CRM/365 depuis 15 ans • Lead technique chez Javista depuis 7 ans • Créateur de l’application XrmToolBox • Auteur de 29 plugins • MVP depuis 9 ans
  • 4. Agenda • Introduction / Historique XrmToolBox • Principes de XrmToolBox • Comment développer un plugin • Développons un plugin ensemble • Q&A
  • 5. Introduction / Historique XrmToolBox • Existence de plusieurs outils individuels • Volonté d’améliorer la découverte et l’utilisation de tous les outils • Volonté de sauvegarder/partager les connexions entre les outils • Première tentative de méta outil : SolutionExtender => Echec! • Rassemblement des outils existants dans XrmToolBox • Mis en ligne en Décembre 2012
  • 6. Principes de XrmToolBox • Les plugins doivent: • Automatiser des tâches répétitives • View Layout Replicator • Bulk Workflow Execution • Contourner les limitations de l’application • User Settings Utility • Plugin Trace Viewer • Exposer des traitements accessibles uniquement au travers du SDK ou inexistants • AutoNumber Generator • Attribute Usage Inspector
  • 7. Comment développer un plugin • Avoir une idée ou un besoin! • Installer le modèle de plugin dans Visual Studio • Lire la documentation sur le portail • Développer la logique métier et l’interface utilisateur • Optimiser la mise en forme • Implémenter les interfaces d’extension • Tester, tester et tester! • Créer un package Nuget • Enregistrer son plugin sur le portail
  • 8. Installer le modèle de plugin dans Visual Studio https://marketplace.visualstudio.com/items?itemName=TanguyTMVPCRM.XrmToolBoxPluginProjectTemplate- 19499
  • 9. Lire la documentation sur le portail • La documentation permet de suivre les bonnes pratiques: • S’assurer de la présence d’une organisation connectée • Réaliser les traitements longue durée en mode asynchrone • Lien • https://www.xrmtoolbox.com/docum entation/for-developers/
  • 10. Développer la logique métier et l’UI • En termes d’interface utilisateur, bien penser à personnaliser son plugin avec un logo et un jeu de couleurs
  • 11. Optimiser la mise en forme • Pas de vrai responsive design (WinForms) • Utiliser des conteneurs • Panel • SplitContainer • GroupBox • DockContent • Adapter les contrôles en fonction du conteneur parent • Anchors : Positionnement d’un contrôle pas rapport au conteneur parent • Dock : Occupation de l’espace dans le contrôle parent
  • 12. Implémenter les interfaces d’extension • Permet d’ajouter des informations dans l’interface de l’application principale (optionnel): • Lien vers le projet Github • Lien vers PayPal • Lien vers la documentation • Ajout d’information de progression dans la barre de statut • Documentation: https://www.xrmtoolbox.com/documentation/for-developers/interfaces/
  • 13. Tester, tester et tester! • Pour vous aider, une checklist est disponible sur le portail: • https://www.xrmtoolbox.com/documentation/for-developers/deploy-your- plugin-in-plugins-store/plugin-validation-check-list/
  • 14. Créer un package Nuget • Seule manière de proposer un plugin dans le Plugins Store • Le Plugins Store liste les packages Nuget référencés et validés sur le portail XrmToolBox • Possibilité de créer le package: • Manuellement : Nuget Package Explorer • Deploy your plugin in Plugins Store • Automatiquement : Azure DevOps (ou autre build) • Use Azure DevOps to publish XrmToolBox plugins
  • 15. Enregistrer son plugin sur le portail • L’enregistrement se fait à l’aide de l’id du package Nuget • Le portail récupère toutes les informations à partir du package • Le processus de validation est manuel, peut prendre du temps.
  • 16. Passons à la pratique! Quelqu’un a-t-il une idée?
  • 17. Passons à la pratique! • Une idée? Afficher le contenu XAML d’un workflow • Pourquoi? Contrôler que les champs dynamiques sont correctement implémentés • Comment? • Afficher la liste des workflows • A la sélection d’un workflow, afficher le contenu XAML Liste des workflows Contenu XAML du workflow
  • 19. THANK YOU TO THE COMMUNITY SPONSORS!