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

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
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
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 

Dernier (20)

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
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
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

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