SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Kürzlich hochgeladen

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 

Kürzlich hochgeladen (20)

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 

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.

Hinweis der Redaktion

  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