SlideShare une entreprise Scribd logo
1  sur  16
Jonas Rapp, Innofactor AB
1
var jonas = (WhoAmIResponse)service.Execute(new WhoAmIRequest());
• Head of Development, Innofactor Sweden
- Cinteros
• Software Developer
- Since 1994
• 100% MS Dynamics CRM/365
- Since 2009
• XrmToolBox contributor
- Since 2014
• Speaker
- CRM Saturday 2017
• Twitter: @rappen
• Email: jonas.rapp@innofactor.com
• Blog: jonasrapp.innofactor.se
XrmToolBox – MVP Tanguy Touzard
• Twitter: @TanguyTOUZARD
• Web: www.xrmtoolbox.com
• I really don’t like working too hard
• CRM admin UI is limited
• Bulk actions
• Data investigation
• Advanced editors
• Expose SDK-only features
• Stunnware Tools – R.I.P.
• 50+ tools
• Internal tools and gadgets
- Specialized one-off apps
• The toolbox is there to be filled
- Common interface, connectivity
- Common “marketing”
• Open Source
- Learn from each other
• Community collaboration
- Contribute where you can
4
5
http://tiny.cc/XTBstat
• Why?
- FetchXML is the query language for
Dynamics CRM
- Advanced Find is the only “editor”
• How?
- Represent query in hierarchical UI
- Generate corresponding FetchXML
• Dynamics 365 UI Limitations
- Not-in queries
- Aggregate queries
- System/internal entities
- Attributes from linked entities
- …and so on…
• FXB Features
- Solution for OOB limitations
- Join on other fields than relationships
- Generate C# QueryExpression code
- Generate OData query string
- Easy to use UI to compose queries for
reports in CRM
- Easy integration with other tools
• http://fxb.xrmtoolbox.com
6
• Why?
- Monitor plugin behavior
- Development “debugging”
• How?
- Initialize Tracing Service
- Write to trace
- Throw exceptions
• Dynamics 365 UI Limitations
- Filtering
- Columnset
- Form design
• PTV Features
- Filter by almost anything
- Retrieve 250+ records
- Quick view message/exception
- Group/filter by correlation id
- Show related Plugin Statistics
- Update log setting
• http://ptv.xrmtoolbox.com
7
1. Create a view in CRM showing
accounts without decision makers
2. Create aggregate query showing
number of contacts by role
8
Account view with “not-in” query
1. CRM: Create new personal Account view “Accounts without decision
makers”.
2. XTB: Use View Layout Replicator to copy column layout from “Active
Accounts”.
3. XTB: Use FetchXML Builder to open the view from CRM and edit the
query according to tree to the right (download xml). Test and save the
view.
4. CRM: Refresh CRM and verify results now showing accounts with
contacts but none of them is married.
5. CRM: Open an account, open a contact from the account, happily
marry the contact. Verify account is no longer visible in the view.
6. XTB: Use View Designer to change name of the view to “Accounts
without married people”. Uncheck “Snap to grid” and drag columns to
desired widths. Save view.
7. CRM: Refresh browser to verify view changes.
8. CRM: Open Advanced Find with the new view. Notice it is not possible
to even select it, as CRM cannot render the query.
9
Aggregate query
1. Use FetchXML Builder to create a new query
2. Design the query according to query tree to the right (download xml).
3. Test the query. Notice “unfriendly” results where the marital status is
displayed as a number.
4. Update Options to select Result view Raw fetch result. Test the query
and notice that “friendly” status information is available.
10
1. Plugin verifying that fax is not used
on account
2. Plugin updating account description
field with contacts by role
Before starting the demo, open the
Plugin Trace Viewer in XrmToolBox
and verify that the logging is set to All.
• Custom PluginBase class
- Initialize Tracing Service
- Custom IOrganizationService
• Log all service requests to trace
- Other dev assisting features
https://github.com/rappen/JonasPluginBase
11
12
Verify Fax is not used
1. VS: Clone repository from
https://github.com/rappen/JonasPluginBase.git
2. VS: Check the code in AccountVerification.cs in project
SamplePlugin. Compile the solution.
3. XTB: Use Plugin Registration to register the resulting assembly
SamplePlugin.Merged.dll.
1. (PlugReg may crash when registering an assembly first time. If so, use SDK
version of PlugReg for first registration.)
2. Add steps for Create and Update of account, triggering Pre-validation for all
attributes.
4. CRM: Open an account and enter fax number, save the account.
1. An error like the one top right should be displayed.
2. Try changing some other field.
3. Open an account that has fax number and remove it and save.
5. XTB: Use Plugin Trace Viewer to investigate the logs for the different
save actions.
1. Notice timing…
2. Exception call stack…
3. Context information… etc.
13
Aggregate marital status to account
1. VS: Check the code in AggregateContactStatusToAccount.cs in
project SamplePlugin. Compile the solution.
2. XTB: Add steps for Create and Update of contact, triggering Post-
operation for attributes familystatuscode and parentcustomerid.
3. CRM: Open a contact. Verify or set Company Name, and set a Marital
Status. Save the contact.
4. XTB: Use Plugin Trace Viewer to investigate the logs for the save
action.
1. Notice logged information, both from the service calls and explicitly logged
information from the plugin.
2. Select to View - Correlation Grouping and retrieve the logs again. Notice the
grouping of trace logs related to the same save action gets the same correlation
id. This is very valuable when investigating plugin chains and nested triggering.
3. Double click a record to show it in CRM. Notice the poor UI, if you need any
more arguments to use PTV instead of CRM ;)
14
Bulk touch contacts to trigger plugin
1. XTB: Use Bulk Data Updater to get relevant contacts and then touch
the marital status of the these to trigger the plugin updating accounts
using plugin from previous demo.
1. Select Use FetchXML Builder to get records to update.
2. Compose query to select all contacts with Company Name and Marital Status
(download xml).
3. Click Return FetchXML to load the contacts in Bulk Data Updater.
4. Select options in Bulk Data Updater
1. Attribute to update: Marital Status.
2. Update Method: Touch. This will “set the same value again” on marital status
for all returned contacts.
5. Click Update records to start touching all returned contacts.
6. CRM: Verify that all accounts with contacts with marital status now
have Description with number of contacts by marital status.
7. XTB: Use Plugin Trace Viewer to investigate the trace log records
from the bulk touch action.
15
Automatically update plugin in CRM
1. XTB: Open tool Plugin Auto Deployer to have XTB automatically
update the plugin assembly in CRM when recompiled.
1. Select the resulting merged assembly with the plugin.
2. Change something in the plugins from previous demos.
3. Compile the project and verify that the Plugin Auto Deployer has updated the
assembly.
2. CRM: Change some information that will trigger the updated plugin
3. XTB: Use Plugin Trace Viewer to verify that the changed plugin is now
triggering.
CRM Saturday - XrmToolBox with Jonas Rapp

Contenu connexe

Tendances

Episode 12 - Basics of Trigger
Episode 12 - Basics of TriggerEpisode 12 - Basics of Trigger
Episode 12 - Basics of TriggerJitendra Zaa
 
Automated Testing for Dynamics CRM 3 - CRMUG 2014
Automated Testing for Dynamics CRM 3 - CRMUG 2014Automated Testing for Dynamics CRM 3 - CRMUG 2014
Automated Testing for Dynamics CRM 3 - CRMUG 2014Wael Hamze
 
Silverlight & Microsoft CRM Development - extremeCRM Berlin 2012
Silverlight & Microsoft CRM Development - extremeCRM Berlin 2012Silverlight & Microsoft CRM Development - extremeCRM Berlin 2012
Silverlight & Microsoft CRM Development - extremeCRM Berlin 2012Wael Hamze
 
Automated Testing for Dynamics CRM 4 - CRMUG 2014
Automated Testing for Dynamics CRM 4 - CRMUG 2014Automated Testing for Dynamics CRM 4 - CRMUG 2014
Automated Testing for Dynamics CRM 4 - CRMUG 2014Wael Hamze
 
Automated Testing for Dynamics CRM 2 - CRMUG 2014
Automated Testing for Dynamics CRM 2 - CRMUG 2014Automated Testing for Dynamics CRM 2 - CRMUG 2014
Automated Testing for Dynamics CRM 2 - CRMUG 2014Wael Hamze
 
Episode 20 - Trigger Frameworks in Salesforce
Episode 20 - Trigger Frameworks in SalesforceEpisode 20 - Trigger Frameworks in Salesforce
Episode 20 - Trigger Frameworks in SalesforceJitendra Zaa
 

Tendances (6)

Episode 12 - Basics of Trigger
Episode 12 - Basics of TriggerEpisode 12 - Basics of Trigger
Episode 12 - Basics of Trigger
 
Automated Testing for Dynamics CRM 3 - CRMUG 2014
Automated Testing for Dynamics CRM 3 - CRMUG 2014Automated Testing for Dynamics CRM 3 - CRMUG 2014
Automated Testing for Dynamics CRM 3 - CRMUG 2014
 
Silverlight & Microsoft CRM Development - extremeCRM Berlin 2012
Silverlight & Microsoft CRM Development - extremeCRM Berlin 2012Silverlight & Microsoft CRM Development - extremeCRM Berlin 2012
Silverlight & Microsoft CRM Development - extremeCRM Berlin 2012
 
Automated Testing for Dynamics CRM 4 - CRMUG 2014
Automated Testing for Dynamics CRM 4 - CRMUG 2014Automated Testing for Dynamics CRM 4 - CRMUG 2014
Automated Testing for Dynamics CRM 4 - CRMUG 2014
 
Automated Testing for Dynamics CRM 2 - CRMUG 2014
Automated Testing for Dynamics CRM 2 - CRMUG 2014Automated Testing for Dynamics CRM 2 - CRMUG 2014
Automated Testing for Dynamics CRM 2 - CRMUG 2014
 
Episode 20 - Trigger Frameworks in Salesforce
Episode 20 - Trigger Frameworks in SalesforceEpisode 20 - Trigger Frameworks in Salesforce
Episode 20 - Trigger Frameworks in Salesforce
 

Similaire à CRM Saturday - XrmToolBox with Jonas Rapp

Microsoft Dynamics CRM SSRS REPORTS
Microsoft Dynamics CRM SSRS REPORTS Microsoft Dynamics CRM SSRS REPORTS
Microsoft Dynamics CRM SSRS REPORTS Naveen Kumar
 
Customer Automation Masterclass - Workshop 1: Data Enrichment using Clearbit
Customer Automation Masterclass - Workshop 1: Data Enrichment using ClearbitCustomer Automation Masterclass - Workshop 1: Data Enrichment using Clearbit
Customer Automation Masterclass - Workshop 1: Data Enrichment using ClearbitJanBogaert8
 
Dynamics CRM Harsha PPT
Dynamics CRM Harsha PPTDynamics CRM Harsha PPT
Dynamics CRM Harsha PPTHarsha T
 
Top 10 highlights salesforce winter 18 release
Top 10 highlights salesforce winter 18 releaseTop 10 highlights salesforce winter 18 release
Top 10 highlights salesforce winter 18 releaseNigam Goyal
 
Dynamics 365 self hosting bots
Dynamics 365 self hosting botsDynamics 365 self hosting bots
Dynamics 365 self hosting botsAmit Patil
 
How to build a SaaS solution in 60 days
How to build a SaaS solution in 60 daysHow to build a SaaS solution in 60 days
How to build a SaaS solution in 60 daysBrett McLain
 
Informatica complex transformation i
Informatica complex transformation iInformatica complex transformation i
Informatica complex transformation iAmit Sharma
 
Yes, It's Number One it's TOTP!
Yes, It's Number One it's TOTP!Yes, It's Number One it's TOTP!
Yes, It's Number One it's TOTP!Keith Brooks
 
Unified Service Desk - Part 3
Unified Service Desk  - Part 3Unified Service Desk  - Part 3
Unified Service Desk - Part 3Naveen Kumar
 
Business Tracking CRM - Development Solution
Business Tracking CRM - Development SolutionBusiness Tracking CRM - Development Solution
Business Tracking CRM - Development SolutionMobilunity
 
Share point saturday2013 upsa_3rd_party_tool awareness
Share point saturday2013 upsa_3rd_party_tool awarenessShare point saturday2013 upsa_3rd_party_tool awareness
Share point saturday2013 upsa_3rd_party_tool awarenesspangressive
 
Custom Automation Masterclass – Workshop 2: Email validation using kKckbox
Custom Automation Masterclass – Workshop 2: Email validation using kKckboxCustom Automation Masterclass – Workshop 2: Email validation using kKckbox
Custom Automation Masterclass – Workshop 2: Email validation using kKckboxJanBogaert8
 
HTML5 Up and Running
HTML5 Up and RunningHTML5 Up and Running
HTML5 Up and RunningCodemotion
 

Similaire à CRM Saturday - XrmToolBox with Jonas Rapp (20)

Microsoft Dynamics CRM SSRS REPORTS
Microsoft Dynamics CRM SSRS REPORTS Microsoft Dynamics CRM SSRS REPORTS
Microsoft Dynamics CRM SSRS REPORTS
 
M365 Teams Automation
M365 Teams AutomationM365 Teams Automation
M365 Teams Automation
 
Customer Automation Masterclass - Workshop 1: Data Enrichment using Clearbit
Customer Automation Masterclass - Workshop 1: Data Enrichment using ClearbitCustomer Automation Masterclass - Workshop 1: Data Enrichment using Clearbit
Customer Automation Masterclass - Workshop 1: Data Enrichment using Clearbit
 
Dynamics CRM Harsha PPT
Dynamics CRM Harsha PPTDynamics CRM Harsha PPT
Dynamics CRM Harsha PPT
 
Lug
LugLug
Lug
 
Top 10 highlights salesforce winter 18 release
Top 10 highlights salesforce winter 18 releaseTop 10 highlights salesforce winter 18 release
Top 10 highlights salesforce winter 18 release
 
Dynamics 365 self hosting bots
Dynamics 365 self hosting botsDynamics 365 self hosting bots
Dynamics 365 self hosting bots
 
How to build a SaaS solution in 60 days
How to build a SaaS solution in 60 daysHow to build a SaaS solution in 60 days
How to build a SaaS solution in 60 days
 
Informatica complex transformation i
Informatica complex transformation iInformatica complex transformation i
Informatica complex transformation i
 
Teams Automation with Graph API
Teams Automation with Graph APITeams Automation with Graph API
Teams Automation with Graph API
 
Yes, It's Number One it's TOTP!
Yes, It's Number One it's TOTP!Yes, It's Number One it's TOTP!
Yes, It's Number One it's TOTP!
 
Designing Modules in Python
Designing Modules in PythonDesigning Modules in Python
Designing Modules in Python
 
summer21-fr
summer21-frsummer21-fr
summer21-fr
 
Lightning Process Builder
Lightning Process BuilderLightning Process Builder
Lightning Process Builder
 
Lightning Process Builder
Lightning Process BuilderLightning Process Builder
Lightning Process Builder
 
Unified Service Desk - Part 3
Unified Service Desk  - Part 3Unified Service Desk  - Part 3
Unified Service Desk - Part 3
 
Business Tracking CRM - Development Solution
Business Tracking CRM - Development SolutionBusiness Tracking CRM - Development Solution
Business Tracking CRM - Development Solution
 
Share point saturday2013 upsa_3rd_party_tool awareness
Share point saturday2013 upsa_3rd_party_tool awarenessShare point saturday2013 upsa_3rd_party_tool awareness
Share point saturday2013 upsa_3rd_party_tool awareness
 
Custom Automation Masterclass – Workshop 2: Email validation using kKckbox
Custom Automation Masterclass – Workshop 2: Email validation using kKckboxCustom Automation Masterclass – Workshop 2: Email validation using kKckbox
Custom Automation Masterclass – Workshop 2: Email validation using kKckbox
 
HTML5 Up and Running
HTML5 Up and RunningHTML5 Up and Running
HTML5 Up and Running
 

Dernier

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 

Dernier (20)

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 

CRM Saturday - XrmToolBox with Jonas Rapp

  • 2. var jonas = (WhoAmIResponse)service.Execute(new WhoAmIRequest()); • Head of Development, Innofactor Sweden - Cinteros • Software Developer - Since 1994 • 100% MS Dynamics CRM/365 - Since 2009 • XrmToolBox contributor - Since 2014 • Speaker - CRM Saturday 2017 • Twitter: @rappen • Email: jonas.rapp@innofactor.com • Blog: jonasrapp.innofactor.se XrmToolBox – MVP Tanguy Touzard • Twitter: @TanguyTOUZARD • Web: www.xrmtoolbox.com
  • 3.
  • 4. • I really don’t like working too hard • CRM admin UI is limited • Bulk actions • Data investigation • Advanced editors • Expose SDK-only features • Stunnware Tools – R.I.P. • 50+ tools • Internal tools and gadgets - Specialized one-off apps • The toolbox is there to be filled - Common interface, connectivity - Common “marketing” • Open Source - Learn from each other • Community collaboration - Contribute where you can 4
  • 6. • Why? - FetchXML is the query language for Dynamics CRM - Advanced Find is the only “editor” • How? - Represent query in hierarchical UI - Generate corresponding FetchXML • Dynamics 365 UI Limitations - Not-in queries - Aggregate queries - System/internal entities - Attributes from linked entities - …and so on… • FXB Features - Solution for OOB limitations - Join on other fields than relationships - Generate C# QueryExpression code - Generate OData query string - Easy to use UI to compose queries for reports in CRM - Easy integration with other tools • http://fxb.xrmtoolbox.com 6
  • 7. • Why? - Monitor plugin behavior - Development “debugging” • How? - Initialize Tracing Service - Write to trace - Throw exceptions • Dynamics 365 UI Limitations - Filtering - Columnset - Form design • PTV Features - Filter by almost anything - Retrieve 250+ records - Quick view message/exception - Group/filter by correlation id - Show related Plugin Statistics - Update log setting • http://ptv.xrmtoolbox.com 7
  • 8. 1. Create a view in CRM showing accounts without decision makers 2. Create aggregate query showing number of contacts by role 8
  • 9. Account view with “not-in” query 1. CRM: Create new personal Account view “Accounts without decision makers”. 2. XTB: Use View Layout Replicator to copy column layout from “Active Accounts”. 3. XTB: Use FetchXML Builder to open the view from CRM and edit the query according to tree to the right (download xml). Test and save the view. 4. CRM: Refresh CRM and verify results now showing accounts with contacts but none of them is married. 5. CRM: Open an account, open a contact from the account, happily marry the contact. Verify account is no longer visible in the view. 6. XTB: Use View Designer to change name of the view to “Accounts without married people”. Uncheck “Snap to grid” and drag columns to desired widths. Save view. 7. CRM: Refresh browser to verify view changes. 8. CRM: Open Advanced Find with the new view. Notice it is not possible to even select it, as CRM cannot render the query. 9
  • 10. Aggregate query 1. Use FetchXML Builder to create a new query 2. Design the query according to query tree to the right (download xml). 3. Test the query. Notice “unfriendly” results where the marital status is displayed as a number. 4. Update Options to select Result view Raw fetch result. Test the query and notice that “friendly” status information is available. 10
  • 11. 1. Plugin verifying that fax is not used on account 2. Plugin updating account description field with contacts by role Before starting the demo, open the Plugin Trace Viewer in XrmToolBox and verify that the logging is set to All. • Custom PluginBase class - Initialize Tracing Service - Custom IOrganizationService • Log all service requests to trace - Other dev assisting features https://github.com/rappen/JonasPluginBase 11
  • 12. 12 Verify Fax is not used 1. VS: Clone repository from https://github.com/rappen/JonasPluginBase.git 2. VS: Check the code in AccountVerification.cs in project SamplePlugin. Compile the solution. 3. XTB: Use Plugin Registration to register the resulting assembly SamplePlugin.Merged.dll. 1. (PlugReg may crash when registering an assembly first time. If so, use SDK version of PlugReg for first registration.) 2. Add steps for Create and Update of account, triggering Pre-validation for all attributes. 4. CRM: Open an account and enter fax number, save the account. 1. An error like the one top right should be displayed. 2. Try changing some other field. 3. Open an account that has fax number and remove it and save. 5. XTB: Use Plugin Trace Viewer to investigate the logs for the different save actions. 1. Notice timing… 2. Exception call stack… 3. Context information… etc.
  • 13. 13 Aggregate marital status to account 1. VS: Check the code in AggregateContactStatusToAccount.cs in project SamplePlugin. Compile the solution. 2. XTB: Add steps for Create and Update of contact, triggering Post- operation for attributes familystatuscode and parentcustomerid. 3. CRM: Open a contact. Verify or set Company Name, and set a Marital Status. Save the contact. 4. XTB: Use Plugin Trace Viewer to investigate the logs for the save action. 1. Notice logged information, both from the service calls and explicitly logged information from the plugin. 2. Select to View - Correlation Grouping and retrieve the logs again. Notice the grouping of trace logs related to the same save action gets the same correlation id. This is very valuable when investigating plugin chains and nested triggering. 3. Double click a record to show it in CRM. Notice the poor UI, if you need any more arguments to use PTV instead of CRM ;)
  • 14. 14 Bulk touch contacts to trigger plugin 1. XTB: Use Bulk Data Updater to get relevant contacts and then touch the marital status of the these to trigger the plugin updating accounts using plugin from previous demo. 1. Select Use FetchXML Builder to get records to update. 2. Compose query to select all contacts with Company Name and Marital Status (download xml). 3. Click Return FetchXML to load the contacts in Bulk Data Updater. 4. Select options in Bulk Data Updater 1. Attribute to update: Marital Status. 2. Update Method: Touch. This will “set the same value again” on marital status for all returned contacts. 5. Click Update records to start touching all returned contacts. 6. CRM: Verify that all accounts with contacts with marital status now have Description with number of contacts by marital status. 7. XTB: Use Plugin Trace Viewer to investigate the trace log records from the bulk touch action.
  • 15. 15 Automatically update plugin in CRM 1. XTB: Open tool Plugin Auto Deployer to have XTB automatically update the plugin assembly in CRM when recompiled. 1. Select the resulting merged assembly with the plugin. 2. Change something in the plugins from previous demos. 3. Compile the project and verify that the Plugin Auto Deployer has updated the assembly. 2. CRM: Change some information that will trigger the updated plugin 3. XTB: Use Plugin Trace Viewer to verify that the changed plugin is now triggering.

Notes de l'éditeur

  1. 00:20
  2. 1:45
  3. 2:00
  4. 5:10 7:45 Bulk – Change User Settings, Run WF on many records Data – Read system entities, complex queries Editors – RWB, Sitemap SDK – Early Bound Generator, DateTime Behavior
  5. 13:00
  6. 17:30
  7. 21:00
  8. Create a new personal view from Active Accounts Open view in FXB Add outer link entity for contact – parentcustomerid Run query Add condition: only active contacts Run query Save query to view Refresh view in CRM
  9. Create a new personal view from Active Accounts Open view in FXB Add outer link entity for contact – parentcustomerid Run query Add condition: only active contacts Run query Save query to view Refresh view in CRM
  10. Create a new personal view from Active Accounts Open view in FXB Add outer link entity for contact – parentcustomerid Run query Add condition: only active contacts Run query Save query to view Refresh view in CRM