SlideShare a Scribd company logo
1 of 24
| Troubleshooting Dashboard Performance
Troubleshooting Dashboard Performance
Low-impact data archiving
| Troubleshooting Dashboard Performance| Troubleshooting Dashboard Performance
Daan Brandenburg
Consultant | CoolProfs
@
in
Daan.brandenburg@coolprofs.com
/daan-brandenburg-b58086a5
| Troubleshooting Dashboard Performance| Troubleshooting Dashboard Performance
Dashboard issues?
| Troubleshooting Dashboard Performance
Dashboard:
● Extensive loading time
(<= 10 minutes);
● Dated application;
● No data archiving
functionality;
| Troubleshooting Dashboard Performance
WebBlocks:
● Screen Dashboard;
● CurrentActivitiesTable;
● CurrentActivitiesTableByBaseId;
● ActivitiesContentRow;
● CurrentActivitiesTotalByBaseId;
● FourWeekDoneChart;
| Troubleshooting Dashboard Performance
Some queries:
● Count per category and step;
| Troubleshooting Dashboard Performance
Some queries:
● Day total directly handled;
| Troubleshooting Dashboard Performance
Some queries:
● 4 week total;
| Troubleshooting Dashboard Performance
Why loading all information at once
is a problem:
● Every category contains a lot of
subcategories;
● Repeated query execution;
| Troubleshooting Dashboard Performance| Troubleshooting Dashboard Performance
How to improve?
| Troubleshooting Dashboard Performance
Pre-analysis:
● No functionality should be lost;
● Archive data with low impact;
● Not loading all information
simultaneously;
| Troubleshooting Dashboard Performance
Not loading all information at once:
| Troubleshooting Dashboard Performance
Challenges with archiving data:
● Two entities;
● ServiceRequest;
● ServiceRequestStep;
● ServiceRequestId used
everywhere;
● How to do this with low impact?
| Troubleshooting Dashboard Performance| Troubleshooting Dashboard Performance
Low-impact data archiving?
| Troubleshooting Dashboard Performance
Step 1/14:
● Only use CRUD wrappers, not
the Create or Update entity
actions directly;
| Troubleshooting Dashboard Performance
Step 2/14 and 3/14:
● Copy entity;
● In original entity add boolean;
Original entity New entity
| Troubleshooting Dashboard Performance
Step 4/14:
● Update the CRUD wrappers so
that duplicate of
ServiceRequest record will be
made for
ServiceRequestCurrent;
| Troubleshooting Dashboard Performance
Step 5/14, 6/14:
● Write a timer to copy data from
ServiceRequest to
ServiceRequestCurrent;
● Write a timer to delete data from
copied entity to prevent it from
having unnecessary data;
| Troubleshooting Dashboard Performance
Step 7/14, 8/14:
● Publish;
● Deploy to QA and Prod.;
● To verify data in
ServiceRequestCurrent;
● And validate delete timer;
| Troubleshooting Dashboard Performance
Step 9/14:
● Change reference to ServiceRequestCurrent entity;
| Troubleshooting Dashboard Performance
Step 10/14, 11/14, 12/14:
● Optional - Remove the newly
added boolean from original
entity;
● Optional - Remove the timer
that migrated the data;
● Deploy to QA and Prod.;
| Troubleshooting Dashboard Performance
Step 13/14, 14/14:
● Use performance analytics in
Lifetime;
● Make sure to only use the Id of
original entity;
| Troubleshooting Dashboard Performance
Conclusion:
● Performance increased;
● Satisfied customer;
● More work needs to be done;
| Troubleshooting Dashboard Performance
Thank You!
@ inDaan.brandenburg@coolprofs.com / daan-brandenburg-b58086a5

More Related Content

What's hot

Going Global with Outsystems Mobile
Going Global with Outsystems MobileGoing Global with Outsystems Mobile
Going Global with Outsystems MobileOutSystems
 
Hands-On With Reactive Web Design
Hands-On With Reactive Web DesignHands-On With Reactive Web Design
Hands-On With Reactive Web DesignOutSystems
 
Mobile Synchronization Patterns for Large Volumes of Data
Mobile Synchronization Patterns for Large Volumes of DataMobile Synchronization Patterns for Large Volumes of Data
Mobile Synchronization Patterns for Large Volumes of DataOutSystems
 
Creating User-Customizable Mobile Menus
Creating User-Customizable Mobile MenusCreating User-Customizable Mobile Menus
Creating User-Customizable Mobile MenusOutSystems
 
Production IT for Microsoft Dynamics NAV
Production IT for Microsoft Dynamics NAVProduction IT for Microsoft Dynamics NAV
Production IT for Microsoft Dynamics NAVNAVEKSA A/S
 
Process Automation: an Update from the Trenches
Process Automation: an Update from the TrenchesProcess Automation: an Update from the Trenches
Process Automation: an Update from the TrenchesKris Verlaenen
 
Case management applications with BPM
Case management applications with BPMCase management applications with BPM
Case management applications with BPMKris Verlaenen
 
BPM Suite 12c Launch - Focus on Developer Productivity
BPM Suite 12c Launch - Focus on Developer ProductivityBPM Suite 12c Launch - Focus on Developer Productivity
BPM Suite 12c Launch - Focus on Developer ProductivityLucas Jellema
 
Building advanced case-driven applications
Building advanced case-driven applicationsBuilding advanced case-driven applications
Building advanced case-driven applicationsKris Verlaenen
 
Summit 2019: "Submarine" initiative
Summit 2019: "Submarine" initiativeSummit 2019: "Submarine" initiative
Summit 2019: "Submarine" initiativeKris Verlaenen
 
Serverless Apps on Google Cloud: more dev, less ops
Serverless Apps on Google Cloud:  more dev, less opsServerless Apps on Google Cloud:  more dev, less ops
Serverless Apps on Google Cloud: more dev, less opsJoseph Lust
 
Measure Customer Experience of Your OutSystems Web and Mobile Applications
Measure Customer Experience of Your OutSystems Web and Mobile ApplicationsMeasure Customer Experience of Your OutSystems Web and Mobile Applications
Measure Customer Experience of Your OutSystems Web and Mobile ApplicationsOutSystems
 
Everything You Need to Know About Migrating Applications
Everything You Need to Know About Migrating ApplicationsEverything You Need to Know About Migrating Applications
Everything You Need to Know About Migrating ApplicationsOutSystems
 
Cédric Vidal from Quicksign: Building a digital on-boarding microservices pla...
Cédric Vidal from Quicksign: Building a digital on-boarding microservices pla...Cédric Vidal from Quicksign: Building a digital on-boarding microservices pla...
Cédric Vidal from Quicksign: Building a digital on-boarding microservices pla...camunda services GmbH
 
Building responsive and flexible applications with BPM
Building responsive and flexible applications with BPMBuilding responsive and flexible applications with BPM
Building responsive and flexible applications with BPMKris Verlaenen
 
Empowering Business Users with Process Management Tools
Empowering Business Users with Process Management ToolsEmpowering Business Users with Process Management Tools
Empowering Business Users with Process Management ToolsKris Verlaenen
 
The good, the bad, the ugly side of step functions
The good, the bad, the ugly side of step functionsThe good, the bad, the ugly side of step functions
The good, the bad, the ugly side of step functionsMohsiur Rahman
 
Process-driven applications: let BPM do (some of) your work
Process-driven applications: let BPM do (some of) your workProcess-driven applications: let BPM do (some of) your work
Process-driven applications: let BPM do (some of) your workKris Verlaenen
 
Process-driven applications
Process-driven applicationsProcess-driven applications
Process-driven applicationsKris Verlaenen
 

What's hot (20)

Going Global with Outsystems Mobile
Going Global with Outsystems MobileGoing Global with Outsystems Mobile
Going Global with Outsystems Mobile
 
Hands-On With Reactive Web Design
Hands-On With Reactive Web DesignHands-On With Reactive Web Design
Hands-On With Reactive Web Design
 
Mobile Synchronization Patterns for Large Volumes of Data
Mobile Synchronization Patterns for Large Volumes of DataMobile Synchronization Patterns for Large Volumes of Data
Mobile Synchronization Patterns for Large Volumes of Data
 
Creating User-Customizable Mobile Menus
Creating User-Customizable Mobile MenusCreating User-Customizable Mobile Menus
Creating User-Customizable Mobile Menus
 
Production IT for Microsoft Dynamics NAV
Production IT for Microsoft Dynamics NAVProduction IT for Microsoft Dynamics NAV
Production IT for Microsoft Dynamics NAV
 
Process Automation: an Update from the Trenches
Process Automation: an Update from the TrenchesProcess Automation: an Update from the Trenches
Process Automation: an Update from the Trenches
 
Case management applications with BPM
Case management applications with BPMCase management applications with BPM
Case management applications with BPM
 
SOA_BPM_12c_launch_event_BPM_track_developer_productivity_lucasjellema
SOA_BPM_12c_launch_event_BPM_track_developer_productivity_lucasjellemaSOA_BPM_12c_launch_event_BPM_track_developer_productivity_lucasjellema
SOA_BPM_12c_launch_event_BPM_track_developer_productivity_lucasjellema
 
BPM Suite 12c Launch - Focus on Developer Productivity
BPM Suite 12c Launch - Focus on Developer ProductivityBPM Suite 12c Launch - Focus on Developer Productivity
BPM Suite 12c Launch - Focus on Developer Productivity
 
Building advanced case-driven applications
Building advanced case-driven applicationsBuilding advanced case-driven applications
Building advanced case-driven applications
 
Summit 2019: "Submarine" initiative
Summit 2019: "Submarine" initiativeSummit 2019: "Submarine" initiative
Summit 2019: "Submarine" initiative
 
Serverless Apps on Google Cloud: more dev, less ops
Serverless Apps on Google Cloud:  more dev, less opsServerless Apps on Google Cloud:  more dev, less ops
Serverless Apps on Google Cloud: more dev, less ops
 
Measure Customer Experience of Your OutSystems Web and Mobile Applications
Measure Customer Experience of Your OutSystems Web and Mobile ApplicationsMeasure Customer Experience of Your OutSystems Web and Mobile Applications
Measure Customer Experience of Your OutSystems Web and Mobile Applications
 
Everything You Need to Know About Migrating Applications
Everything You Need to Know About Migrating ApplicationsEverything You Need to Know About Migrating Applications
Everything You Need to Know About Migrating Applications
 
Cédric Vidal from Quicksign: Building a digital on-boarding microservices pla...
Cédric Vidal from Quicksign: Building a digital on-boarding microservices pla...Cédric Vidal from Quicksign: Building a digital on-boarding microservices pla...
Cédric Vidal from Quicksign: Building a digital on-boarding microservices pla...
 
Building responsive and flexible applications with BPM
Building responsive and flexible applications with BPMBuilding responsive and flexible applications with BPM
Building responsive and flexible applications with BPM
 
Empowering Business Users with Process Management Tools
Empowering Business Users with Process Management ToolsEmpowering Business Users with Process Management Tools
Empowering Business Users with Process Management Tools
 
The good, the bad, the ugly side of step functions
The good, the bad, the ugly side of step functionsThe good, the bad, the ugly side of step functions
The good, the bad, the ugly side of step functions
 
Process-driven applications: let BPM do (some of) your work
Process-driven applications: let BPM do (some of) your workProcess-driven applications: let BPM do (some of) your work
Process-driven applications: let BPM do (some of) your work
 
Process-driven applications
Process-driven applicationsProcess-driven applications
Process-driven applications
 

Similar to Troubleshooting Dashboard Performance

Training Webinar: Detect Performance Bottlenecks of Applications
Training Webinar: Detect Performance Bottlenecks of ApplicationsTraining Webinar: Detect Performance Bottlenecks of Applications
Training Webinar: Detect Performance Bottlenecks of ApplicationsOutSystems
 
Quick Test Professional (QTP/UFT)
Quick Test Professional (QTP/UFT)Quick Test Professional (QTP/UFT)
Quick Test Professional (QTP/UFT)Rajathi-QA
 
BatchJobService
BatchJobServiceBatchJobService
BatchJobServicesupergigas
 
Continuous Performance Testing
Continuous Performance TestingContinuous Performance Testing
Continuous Performance TestingGrid Dynamics
 
Getting Started with Server-Side Testing
Getting Started with Server-Side TestingGetting Started with Server-Side Testing
Getting Started with Server-Side TestingOptimizely
 
2.1 Automation Nation: Keeping your Process Builders in Check
2.1 Automation Nation: Keeping your Process Builders in Check2.1 Automation Nation: Keeping your Process Builders in Check
2.1 Automation Nation: Keeping your Process Builders in CheckTargetX
 
[Webinar] Getting started with server-side testing - presented by WiderFunnel...
[Webinar] Getting started with server-side testing - presented by WiderFunnel...[Webinar] Getting started with server-side testing - presented by WiderFunnel...
[Webinar] Getting started with server-side testing - presented by WiderFunnel...Chris Goward
 
Automated Performance Testing
Automated Performance TestingAutomated Performance Testing
Automated Performance TestingLars Thorup
 
Simplifying the work order business processes at marin municipal water distri...
Simplifying the work order business processes at marin municipal water distri...Simplifying the work order business processes at marin municipal water distri...
Simplifying the work order business processes at marin municipal water distri...robgirvan
 
201601007 Limelight - Hui Qin Teoh
201601007 Limelight - Hui Qin Teoh201601007 Limelight - Hui Qin Teoh
201601007 Limelight - Hui Qin TeohHui Qin Teoh, PMP®
 
KC GT Program Final Report _20150506
KC GT Program  Final Report _20150506KC GT Program  Final Report _20150506
KC GT Program Final Report _20150506Kwong Cheong Ng
 
Change management in hybrid landscapes
Change management in hybrid landscapesChange management in hybrid landscapes
Change management in hybrid landscapesChris Kernaghan
 
Metrics-Based Process Mapping
Metrics-Based Process MappingMetrics-Based Process Mapping
Metrics-Based Process MappingTKMG, Inc.
 
Accelerate your SAP BusinessObjects to the Cloud
Accelerate your SAP BusinessObjects to the CloudAccelerate your SAP BusinessObjects to the Cloud
Accelerate your SAP BusinessObjects to the CloudWiiisdom
 
Case study: Camunda BPM in PwC project
Case study: Camunda BPM in PwC projectCase study: Camunda BPM in PwC project
Case study: Camunda BPM in PwC projectcamunda services GmbH
 
Performance Stability, Tips and Tricks and Underscores
Performance Stability, Tips and Tricks and UnderscoresPerformance Stability, Tips and Tricks and Underscores
Performance Stability, Tips and Tricks and UnderscoresJitendra Singh
 
Frappe Open Day - June 2015
Frappe Open Day - June 2015Frappe Open Day - June 2015
Frappe Open Day - June 2015Anand Doshi
 
VMworld 2013: Moving Enterprise Application Dev/Test to VMware’s Internal Pri...
VMworld 2013: Moving Enterprise Application Dev/Test to VMware’s Internal Pri...VMworld 2013: Moving Enterprise Application Dev/Test to VMware’s Internal Pri...
VMworld 2013: Moving Enterprise Application Dev/Test to VMware’s Internal Pri...VMworld
 

Similar to Troubleshooting Dashboard Performance (20)

Training Webinar: Detect Performance Bottlenecks of Applications
Training Webinar: Detect Performance Bottlenecks of ApplicationsTraining Webinar: Detect Performance Bottlenecks of Applications
Training Webinar: Detect Performance Bottlenecks of Applications
 
Quick Test Professional (QTP/UFT)
Quick Test Professional (QTP/UFT)Quick Test Professional (QTP/UFT)
Quick Test Professional (QTP/UFT)
 
Sprint 59
Sprint 59Sprint 59
Sprint 59
 
BatchJobService
BatchJobServiceBatchJobService
BatchJobService
 
Sprint 58
Sprint 58Sprint 58
Sprint 58
 
Continuous Performance Testing
Continuous Performance TestingContinuous Performance Testing
Continuous Performance Testing
 
Getting Started with Server-Side Testing
Getting Started with Server-Side TestingGetting Started with Server-Side Testing
Getting Started with Server-Side Testing
 
2.1 Automation Nation: Keeping your Process Builders in Check
2.1 Automation Nation: Keeping your Process Builders in Check2.1 Automation Nation: Keeping your Process Builders in Check
2.1 Automation Nation: Keeping your Process Builders in Check
 
[Webinar] Getting started with server-side testing - presented by WiderFunnel...
[Webinar] Getting started with server-side testing - presented by WiderFunnel...[Webinar] Getting started with server-side testing - presented by WiderFunnel...
[Webinar] Getting started with server-side testing - presented by WiderFunnel...
 
Automated Performance Testing
Automated Performance TestingAutomated Performance Testing
Automated Performance Testing
 
Simplifying the work order business processes at marin municipal water distri...
Simplifying the work order business processes at marin municipal water distri...Simplifying the work order business processes at marin municipal water distri...
Simplifying the work order business processes at marin municipal water distri...
 
201601007 Limelight - Hui Qin Teoh
201601007 Limelight - Hui Qin Teoh201601007 Limelight - Hui Qin Teoh
201601007 Limelight - Hui Qin Teoh
 
KC GT Program Final Report _20150506
KC GT Program  Final Report _20150506KC GT Program  Final Report _20150506
KC GT Program Final Report _20150506
 
Change management in hybrid landscapes
Change management in hybrid landscapesChange management in hybrid landscapes
Change management in hybrid landscapes
 
Metrics-Based Process Mapping
Metrics-Based Process MappingMetrics-Based Process Mapping
Metrics-Based Process Mapping
 
Accelerate your SAP BusinessObjects to the Cloud
Accelerate your SAP BusinessObjects to the CloudAccelerate your SAP BusinessObjects to the Cloud
Accelerate your SAP BusinessObjects to the Cloud
 
Case study: Camunda BPM in PwC project
Case study: Camunda BPM in PwC projectCase study: Camunda BPM in PwC project
Case study: Camunda BPM in PwC project
 
Performance Stability, Tips and Tricks and Underscores
Performance Stability, Tips and Tricks and UnderscoresPerformance Stability, Tips and Tricks and Underscores
Performance Stability, Tips and Tricks and Underscores
 
Frappe Open Day - June 2015
Frappe Open Day - June 2015Frappe Open Day - June 2015
Frappe Open Day - June 2015
 
VMworld 2013: Moving Enterprise Application Dev/Test to VMware’s Internal Pri...
VMworld 2013: Moving Enterprise Application Dev/Test to VMware’s Internal Pri...VMworld 2013: Moving Enterprise Application Dev/Test to VMware’s Internal Pri...
VMworld 2013: Moving Enterprise Application Dev/Test to VMware’s Internal Pri...
 

More from OutSystems

Innovating at the Speed of Business in the High-Bandwidth World of Digital Media
Innovating at the Speed of Business in the High-Bandwidth World of Digital MediaInnovating at the Speed of Business in the High-Bandwidth World of Digital Media
Innovating at the Speed of Business in the High-Bandwidth World of Digital MediaOutSystems
 
Beyond “Location”: Informing Real-Estate Decisions Through Innovative Technology
Beyond “Location”: Informing Real-Estate Decisions Through Innovative TechnologyBeyond “Location”: Informing Real-Estate Decisions Through Innovative Technology
Beyond “Location”: Informing Real-Estate Decisions Through Innovative TechnologyOutSystems
 
Beyond Digital Transformation: A Mandate for Disruptive Innovation in the Age...
Beyond Digital Transformation: A Mandate for Disruptive Innovation in the Age...Beyond Digital Transformation: A Mandate for Disruptive Innovation in the Age...
Beyond Digital Transformation: A Mandate for Disruptive Innovation in the Age...OutSystems
 
From Core Systems to Mobile Apps: Digital Transformation from the Inside-Out
From Core Systems to Mobile Apps: Digital Transformation from the Inside-OutFrom Core Systems to Mobile Apps: Digital Transformation from the Inside-Out
From Core Systems to Mobile Apps: Digital Transformation from the Inside-OutOutSystems
 
Orchestrating the Art of the Impossible Using Low-Code to Automate Manual Wor...
Orchestrating the Art of the Impossible Using Low-Code to Automate Manual Wor...Orchestrating the Art of the Impossible Using Low-Code to Automate Manual Wor...
Orchestrating the Art of the Impossible Using Low-Code to Automate Manual Wor...OutSystems
 
Fast and Furious: Modernizing Clinical Application
Fast and Furious: Modernizing Clinical ApplicationFast and Furious: Modernizing Clinical Application
Fast and Furious: Modernizing Clinical ApplicationOutSystems
 
Enrich Visually Google Map Information With Layers
Enrich Visually Google Map Information With LayersEnrich Visually Google Map Information With Layers
Enrich Visually Google Map Information With LayersOutSystems
 
Unattended OutSystems Installation
Unattended OutSystems InstallationUnattended OutSystems Installation
Unattended OutSystems InstallationOutSystems
 
The 4-Layer Architecture in Practice
The 4-Layer Architecture in PracticeThe 4-Layer Architecture in Practice
The 4-Layer Architecture in PracticeOutSystems
 
Speed up Development by Turning Web Blocks Into First-Class Citizens
Speed up Development by Turning Web Blocks Into First-Class CitizensSpeed up Development by Turning Web Blocks Into First-Class Citizens
Speed up Development by Turning Web Blocks Into First-Class CitizensOutSystems
 
Service Actions
Service ActionsService Actions
Service ActionsOutSystems
 
Responsive Ui with Realtime Database
Responsive Ui with Realtime DatabaseResponsive Ui with Realtime Database
Responsive Ui with Realtime DatabaseOutSystems
 
Reactive Web Best Practices
Reactive Web Best PracticesReactive Web Best Practices
Reactive Web Best PracticesOutSystems
 
RADS - Rapid Application Design Sprint
RADS - Rapid Application Design SprintRADS - Rapid Application Design Sprint
RADS - Rapid Application Design SprintOutSystems
 
Pragmatic Innovation
Pragmatic InnovationPragmatic Innovation
Pragmatic InnovationOutSystems
 
Neo in Wonderland: Essential Tools for an Outsystems Architect
Neo in Wonderland: Essential Tools for an Outsystems ArchitectNeo in Wonderland: Essential Tools for an Outsystems Architect
Neo in Wonderland: Essential Tools for an Outsystems ArchitectOutSystems
 
Link Users to Your Specific Page in a Mobile App With Deeplinks
Link Users to Your Specific Page in a Mobile App With DeeplinksLink Users to Your Specific Page in a Mobile App With Deeplinks
Link Users to Your Specific Page in a Mobile App With DeeplinksOutSystems
 
Launching a BPT Process on Entity Update
Launching a BPT Process on Entity UpdateLaunching a BPT Process on Entity Update
Launching a BPT Process on Entity UpdateOutSystems
 
Testing With OutSystems
Testing With OutSystemsTesting With OutSystems
Testing With OutSystemsOutSystems
 
Setting up a Tech Innovation Lab in a Traditional Grocery Retail Environment
Setting up a Tech Innovation Lab in a Traditional Grocery Retail EnvironmentSetting up a Tech Innovation Lab in a Traditional Grocery Retail Environment
Setting up a Tech Innovation Lab in a Traditional Grocery Retail EnvironmentOutSystems
 

More from OutSystems (20)

Innovating at the Speed of Business in the High-Bandwidth World of Digital Media
Innovating at the Speed of Business in the High-Bandwidth World of Digital MediaInnovating at the Speed of Business in the High-Bandwidth World of Digital Media
Innovating at the Speed of Business in the High-Bandwidth World of Digital Media
 
Beyond “Location”: Informing Real-Estate Decisions Through Innovative Technology
Beyond “Location”: Informing Real-Estate Decisions Through Innovative TechnologyBeyond “Location”: Informing Real-Estate Decisions Through Innovative Technology
Beyond “Location”: Informing Real-Estate Decisions Through Innovative Technology
 
Beyond Digital Transformation: A Mandate for Disruptive Innovation in the Age...
Beyond Digital Transformation: A Mandate for Disruptive Innovation in the Age...Beyond Digital Transformation: A Mandate for Disruptive Innovation in the Age...
Beyond Digital Transformation: A Mandate for Disruptive Innovation in the Age...
 
From Core Systems to Mobile Apps: Digital Transformation from the Inside-Out
From Core Systems to Mobile Apps: Digital Transformation from the Inside-OutFrom Core Systems to Mobile Apps: Digital Transformation from the Inside-Out
From Core Systems to Mobile Apps: Digital Transformation from the Inside-Out
 
Orchestrating the Art of the Impossible Using Low-Code to Automate Manual Wor...
Orchestrating the Art of the Impossible Using Low-Code to Automate Manual Wor...Orchestrating the Art of the Impossible Using Low-Code to Automate Manual Wor...
Orchestrating the Art of the Impossible Using Low-Code to Automate Manual Wor...
 
Fast and Furious: Modernizing Clinical Application
Fast and Furious: Modernizing Clinical ApplicationFast and Furious: Modernizing Clinical Application
Fast and Furious: Modernizing Clinical Application
 
Enrich Visually Google Map Information With Layers
Enrich Visually Google Map Information With LayersEnrich Visually Google Map Information With Layers
Enrich Visually Google Map Information With Layers
 
Unattended OutSystems Installation
Unattended OutSystems InstallationUnattended OutSystems Installation
Unattended OutSystems Installation
 
The 4-Layer Architecture in Practice
The 4-Layer Architecture in PracticeThe 4-Layer Architecture in Practice
The 4-Layer Architecture in Practice
 
Speed up Development by Turning Web Blocks Into First-Class Citizens
Speed up Development by Turning Web Blocks Into First-Class CitizensSpeed up Development by Turning Web Blocks Into First-Class Citizens
Speed up Development by Turning Web Blocks Into First-Class Citizens
 
Service Actions
Service ActionsService Actions
Service Actions
 
Responsive Ui with Realtime Database
Responsive Ui with Realtime DatabaseResponsive Ui with Realtime Database
Responsive Ui with Realtime Database
 
Reactive Web Best Practices
Reactive Web Best PracticesReactive Web Best Practices
Reactive Web Best Practices
 
RADS - Rapid Application Design Sprint
RADS - Rapid Application Design SprintRADS - Rapid Application Design Sprint
RADS - Rapid Application Design Sprint
 
Pragmatic Innovation
Pragmatic InnovationPragmatic Innovation
Pragmatic Innovation
 
Neo in Wonderland: Essential Tools for an Outsystems Architect
Neo in Wonderland: Essential Tools for an Outsystems ArchitectNeo in Wonderland: Essential Tools for an Outsystems Architect
Neo in Wonderland: Essential Tools for an Outsystems Architect
 
Link Users to Your Specific Page in a Mobile App With Deeplinks
Link Users to Your Specific Page in a Mobile App With DeeplinksLink Users to Your Specific Page in a Mobile App With Deeplinks
Link Users to Your Specific Page in a Mobile App With Deeplinks
 
Launching a BPT Process on Entity Update
Launching a BPT Process on Entity UpdateLaunching a BPT Process on Entity Update
Launching a BPT Process on Entity Update
 
Testing With OutSystems
Testing With OutSystemsTesting With OutSystems
Testing With OutSystems
 
Setting up a Tech Innovation Lab in a Traditional Grocery Retail Environment
Setting up a Tech Innovation Lab in a Traditional Grocery Retail EnvironmentSetting up a Tech Innovation Lab in a Traditional Grocery Retail Environment
Setting up a Tech Innovation Lab in a Traditional Grocery Retail Environment
 

Recently uploaded

Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 

Recently uploaded (20)

Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 

Troubleshooting Dashboard Performance

  • 1. | Troubleshooting Dashboard Performance Troubleshooting Dashboard Performance Low-impact data archiving
  • 2. | Troubleshooting Dashboard Performance| Troubleshooting Dashboard Performance Daan Brandenburg Consultant | CoolProfs @ in Daan.brandenburg@coolprofs.com /daan-brandenburg-b58086a5
  • 3. | Troubleshooting Dashboard Performance| Troubleshooting Dashboard Performance Dashboard issues?
  • 4. | Troubleshooting Dashboard Performance Dashboard: ● Extensive loading time (<= 10 minutes); ● Dated application; ● No data archiving functionality;
  • 5. | Troubleshooting Dashboard Performance WebBlocks: ● Screen Dashboard; ● CurrentActivitiesTable; ● CurrentActivitiesTableByBaseId; ● ActivitiesContentRow; ● CurrentActivitiesTotalByBaseId; ● FourWeekDoneChart;
  • 6. | Troubleshooting Dashboard Performance Some queries: ● Count per category and step;
  • 7. | Troubleshooting Dashboard Performance Some queries: ● Day total directly handled;
  • 8. | Troubleshooting Dashboard Performance Some queries: ● 4 week total;
  • 9. | Troubleshooting Dashboard Performance Why loading all information at once is a problem: ● Every category contains a lot of subcategories; ● Repeated query execution;
  • 10. | Troubleshooting Dashboard Performance| Troubleshooting Dashboard Performance How to improve?
  • 11. | Troubleshooting Dashboard Performance Pre-analysis: ● No functionality should be lost; ● Archive data with low impact; ● Not loading all information simultaneously;
  • 12. | Troubleshooting Dashboard Performance Not loading all information at once:
  • 13. | Troubleshooting Dashboard Performance Challenges with archiving data: ● Two entities; ● ServiceRequest; ● ServiceRequestStep; ● ServiceRequestId used everywhere; ● How to do this with low impact?
  • 14. | Troubleshooting Dashboard Performance| Troubleshooting Dashboard Performance Low-impact data archiving?
  • 15. | Troubleshooting Dashboard Performance Step 1/14: ● Only use CRUD wrappers, not the Create or Update entity actions directly;
  • 16. | Troubleshooting Dashboard Performance Step 2/14 and 3/14: ● Copy entity; ● In original entity add boolean; Original entity New entity
  • 17. | Troubleshooting Dashboard Performance Step 4/14: ● Update the CRUD wrappers so that duplicate of ServiceRequest record will be made for ServiceRequestCurrent;
  • 18. | Troubleshooting Dashboard Performance Step 5/14, 6/14: ● Write a timer to copy data from ServiceRequest to ServiceRequestCurrent; ● Write a timer to delete data from copied entity to prevent it from having unnecessary data;
  • 19. | Troubleshooting Dashboard Performance Step 7/14, 8/14: ● Publish; ● Deploy to QA and Prod.; ● To verify data in ServiceRequestCurrent; ● And validate delete timer;
  • 20. | Troubleshooting Dashboard Performance Step 9/14: ● Change reference to ServiceRequestCurrent entity;
  • 21. | Troubleshooting Dashboard Performance Step 10/14, 11/14, 12/14: ● Optional - Remove the newly added boolean from original entity; ● Optional - Remove the timer that migrated the data; ● Deploy to QA and Prod.;
  • 22. | Troubleshooting Dashboard Performance Step 13/14, 14/14: ● Use performance analytics in Lifetime; ● Make sure to only use the Id of original entity;
  • 23. | Troubleshooting Dashboard Performance Conclusion: ● Performance increased; ● Satisfied customer; ● More work needs to be done;
  • 24. | Troubleshooting Dashboard Performance Thank You! @ inDaan.brandenburg@coolprofs.com / daan-brandenburg-b58086a5

Editor's Notes

  1. Recently, we were working on an HR department application and were notified that dashboard performance presented problems. Today I will explain how Dashboard performance can be improved through data archiving and the importance of placing a ban on loading all data simultaneously.
  2. My name is Daan Brandenburg and I am a consultant for CoolProfs
  3. So what were the issues we had with the Dashboard?
  4. The key issue with Dashboard was performance; it did not function properly, so that loading the dashboard could take up to ten minutes. It seemed that the application built in 2014 had accumulated lots of data. Somehow, the application appeared to have been used to its full potential. This presented problems for the HR department; because the main idea behind the Dashboard is to provide a quick overview of how much each Category is used on the one hand, and on the other hand, it should show if the HR department is behind in their work. We discovered that data had never been archived within those 5 years and that for this application no data archiving functionality was available
  5. One of the reasons the Dashboard had performance issues was the use of webBlocks in this screen. On the image you can see that there were nested webblocks within webblocks. All data was loaded immediately, even though not all information would be shown immediately on the Dashboard.
  6. This is the query used to count the totals for each category (variant entity) and then for each step in that category (variantstep and servicerequeststep). A category or variant was managed by the HR department. Activities were counted since every ServiceRequest that was started started a BPT Process. Only Activity is a system entity, the other entities are specific for this application. Each new ServiceRequest created multiple ServiceRequestSteps.
  7. This is a query specifically for those ServiceRequests that were handled directly. This is to show the link between a ServiceRequest and a Variant.
  8. This is the query that was used for the bar-chart that is visible on the Dashboard. Again you can see which entities were used.
  9. This image shows why loading all information at once would be a problem as all categories could contain a lot of subcategories. Even though the information of the subcategories would only show when clicking on a category, the information was still loaded immediately. This also meant that all queries shown before were executed. Even though a single query would be very fast, executing them a lot of times results in longer waiting time.
  10. How to improve?
  11. Before I went to this client some analyzing had already been done by colleagues of mine. This Dashboard was very important for the HR-manager and team leaders as they could use it to see how much work needed to be done and when priority needed to be given to a certain category. So no functionality should be lost when coming up with improvements. And changes should have low impact on the rest of the application since the business had experienced negative impact with predecessors making ‘small’ changes in the application. The conclusion was to find a way to start archiving data with low impact on the rest of the application and to not load all information simultaneously.
  12. What we did to not load all data simultaneously is put the webBlock in an If-statement and only load the webBlock when the selected Row was opened. When clicking on a category (row), an OnClick action would be triggered and in that OnClick Action only the selected Category would be opened to show and load the subcategories.
  13. The improvement of creating an archive table was a more difficult one. It was clear that especially two entities contained a lot of data: ServiceRequest and ServiceRequestStep. However, ServiceRequest was an entity that was used all over the application and mostly a search by Id of the ServiceRequest was done. Moving data then from this table to an archive table would have a high impact on the entire application. I soon realized that a lot of screens would have to change, so before really starting with this, I decided to check online if there were any alternatives with lower impact on the application.
  14. That is when I came across an article by Justin James, an outsystems MVP. His suggestion was to, after all the usual tricks, to start purging old records out of the system and only accessing them when absolutely necessary. The main point made in this article is to create new entities (ServiceRequestCurrent for example) and make sure that those entities only contain the data that is relevant for the screen on which the new entities are used. In our case we only needed those ServiceRequests that were closed in the last four weeks and those that were still active. In this way there is a lower impact on the entire application, since you can choose which screens to change by using the new entities. The main reason we went for this solution, and not for other solutions that are available as well, was the low impact it would have on the application so that we could apply it step by step.
  15. In 14 steps, Justin James explains how to do this and these 14 steps are also the steps I applied for the entities ServiceRequest and ServiceRequestStep. If you are not using CRUD wrappers in your business logic, and calling the Entity Actions directly, make a set of CRUD wrappers for ServiceRequest, and replace all references to the Entity Actions to the new CRUD wrappers.
  16. Copy the “ServiceRequest” Entity and call it “ServiceRequestCurrent”. Set the type of its “Id” Attribute to “ServiceRequest Identifier”. Do NOT make CRUD wrappers for it. In ServiceRequest, add an Attribute called “IsCopiedToCurrent” and make sure that it is a Boolean.
  17. Update the CRUD wrappers of ServiceRequest so that the Create and Update wrappers duplicate the record to ServiceRequestCurrent (make sure that they do it after the CreateServiceRequest, so they can set the Id attribute of ServiceRequestCurrent), and that the Delete wrapper performs a hard delete of the matching record from ServiceRequestCurrent. The CRUD wrapper should set the IsCopiedToCurrent Attribute of ServiceRequest to true before writing the ServiceRequest record.
  18. Write a “When Published” timer to copy data from ServiceRequest to ServiceRequestCurrent. To speed things up, only copy the data within your “this is what I consider current” range. Only select values where IsCopiedToCurrent is false. If you have a lot of data, create a ‘smart timer’ that is able to restart itself to prevent timeouts. After writing each new ServiceRequestCurrent record, set the IsCopiedToCurrent of ServiceRequest to true. Write a timer that runs nightly or every week or once a month, or whatever makes sense to you, that detects records in ServiceRequestCurrent that are no longer needed, and performs a hard delete on them to prevent the ServiceRequestCurrent entity to contain unnecessary data.
  19. Publish Deploy to QA and Prod. Verify that the appropriate data was copied from ServiceRequest to ServiceRequestCurrent, and that new ServiceRequest records also get copied to ServiceRequestCurrent. Validate that your timer purges records from ServiceRequestCurrent as-expected.
  20. Now, you have two Entities that look identical, and are interchangeable in your queries and screens: ServiceRequest (all records) and ServiceRequestCurrent (only the most recent ones). Now it is possible to change the queries on the Dashboard to use the ServiceRequestCurrent instead of ServiceRequest. This could also be applied to other screens and if needed, you can have a checkbox or similar on the screen that says “Include All Records” or “Show Archived Records” or something, which will choose a query that is using the ServiceRequest Entity instead of ServiceRequestCurrent. The real magic here happens in this step. Because all of your data is still in ServiceRequest and will never leave, you do not need to do a “big bang” release that changes everything in the whole application all at once. You can change the application slowly but surely as your time permits, with minimal disruption to your roadmap or other timelines.
  21. Remove the “IsCopiedToCurrent” attribute from ServiceRequest. Remove the “When Published” timer that migrated the data. These steps are optional to keep your application nice and clean. Deploy to QA and Prod.
  22. Over time, use the performance analytics in Lifetime to get a before/after comparison of the level of improvement. Make sure that going forwards, if another Entity needs to relate to ServiceRequests, you always use a ServiceRequest Identifer and never ServiceRequestCurrent Identifier, (because that Entity has hard deletes occurring on a regular basis).
  23. The result of all of this was a better performance for the Dashboard. Before the changes waiting time could take up to ten minutes. After the changes this was up to 45 seconds. For the client this was sufficient for now as the difference was quite significant. However there is a backlog item to further improve the performance of the Dashboard, but only after some other changes have been implemented in the application.