SlideShare a Scribd company logo
SPECIALISTS ON
DESIGNING, IMPLEMENTING AND SCALING
CUSTOM SOLUTIONS
BASED ON
SITECORE CMS
Building Maintainable Sitecore Solutions
Proven practices for Sitecore team development
Thomas Eldblom
CTO
Pentia A/S
How to Serve Sitecore
…what we could serve!
Cost of maintenanceCostofChange
Time
Layouts
Templates
Sublayouts
.NET code CSS &
Design files
Settings
in Sitecore
XSLT RenderingsConfig
files
Content
structure
How to build maintainable
Sitecore solutions
• Component architecture
• Using consistent structure and naming.
• Use version control.
• Separate custom functionality from
standard functionality.
• Automate configuration file generation.
• Automate trivial tasks.
Component Architecture
• Function before type
• Agile design principle
– Logically grouped functionality based on cohesion.
– Releasable and reusable modules.
– Focus on reusability as well as maintainability.
• Simple component architecture
– Structure data logically across systems
“A way must exist to deal with groups of classes, otherwise it’s almost like
build a sand castle from individual grains of sand”
Robert C. Martin (Uncle Bob)
Component breakdown
• Breaking down the related functionality of
the website
• Focus on cohesion in each component
• Think of the concern/domain of each
component
– Do the component solve a general
functionality?
– Do the component solve a project specific
functionality?
Component breakdown
Navigation
Products
Search
Spots
Identity
Navigation
Products
Search
Spots
Component Breakdown
Identity
• Product data
• Product presentation
• Menus
• Sitemap
• Search boxes
• Search results
• Indexing • Corporate identity
• Header logo
• Footer disclaimer
• Related information
• Global marketing boxes
Component coupling
• Defines references between components
• Consider each reference made
– Both hard (in code) and loose (in strings)
– Define new components to avoid references
• Specific components should reference
general components
– Stable-Dependencies Principle
• Avoid circular references
– Acyclic Dependencies Principle
• Use coding patterns to avoid high coupling
Component Coupling
– the common but wrong way
• Product data
• Product presentation
• Menus
• Sitemap
• Search boxes
• Search results
• Indexing • Corporate identity
• Header logo
• Footer disclaimer
• Related information
• Global marketing boxes
• Product list page type
• Sitemap page type
• Search results page type
Navigation
Products
Search
Spots
Identity
ProductsProducts
Component Coupling
– the common but wrong way
• Product data
• Product presentation
• Menus
• Sitemap
• Search boxes
• Search results
• Indexing • Corporate identity
• Header logo
• Footer disclaimer
• Related information
• Global marketing boxes
• Product list page type
• Sitemap page type
• Search results page type
Navigation
Products
Search
Spots
Identity
ProductsProductsProducts
DesignPage types
Component Coupling
– the right way
Navigation Search
Spots
Identity
• Product list page type
• Sitemap page
• Search results page
Component Architecture
– @ Pentia
Consistent structure and naming
• Apply naming conventions
– Be consistent with terms.
– Use your naming convention across systems.
• Folder structure
• Visual Studio Projects/Assemblies
• Sitecore Templates
• Layouts, rendering, sublayouts etc.
Advanced component architecture
• High cohesion/Low coupling
• Design Principles
– Reuse/Release Equivalence Principle
– Common Reuse Principle
– Common Closure Principle
– Acyclic Dependencies Principle
– Stable-Dependencies Principle
– Stable-Abstractions Principle
• IoC containers
• and so on…
Agile Principles, Patterns, and Practices in C#
Robert C. Martin
Micah Martin
ISBN-10: 0131857258
Use version control
• ”Single source of the truth”
• Version everything
– Component structure
– Code
– Layouts and renderings
– Templates
– Configuration changes
– and so on…
• How?
– Subversion, Microsoft TFS, you name it…
– Use Sitecore item serialization or Sitecore TDS
Separate custom functionality from
standard functionality.
• Keep track of what belongs to:
– Your solution
– Sitecore (versioned)
– Sitecore modules
– Third party modules
• How?
– Separate your solution from standard
functionality in version control.
– Implement one-click deployment.
• Team Development for Sitecore.
• Web Applications in Visual Studio
How we do it
• The Pentia Build System and Build Library
• Central repository containing:
– All Sitecore versions, modules, patches etc.
– Third party modules
– Pentia shared functionality
• Automated via nAnt
– Copies referenced modules locally
– Generates database scripts
Debug environment
Version control Build library
Automate configuration file
generation
Website Backend Publishing
Website Backend Publishing
Website Backend Publishing
ProductionQATest
Automate configuration file
generation
• Sitecore config includes
– Located in App_ConfigInclude
– Only works on <sitecore> section
– Not environment specific
– /sitecore/admin/showconfig.aspx
• Visual Studio 2010 config transformation
– Environment specific merges
– Only available with web.config (in Visual
Studio)
Resources
• http://www.pentia.net/professional-services
• Books:
– Agile Principles, Patterns, and Practices in C#
• Robert C. Martin & Micah Martin
• ISBN-10: 0131857258
– Clean Code: A Handbook of Agile Software Craftsmanship
• Robert C. Martin
• ISBN-10: 0132350882
• Sites:
– Blog - Molten Core: http://mcore.wordpress.net
– Learn Sitecore: http://learnsitecore.cmsuniverse.net

More Related Content

What's hot

Non SharePoint Deployment
Non SharePoint DeploymentNon SharePoint Deployment
Non SharePoint Deployment
Sparked
 
Developing Customer Portal with Oracle APEX - A Case Study
Developing Customer Portal with Oracle APEX - A Case StudyDeveloping Customer Portal with Oracle APEX - A Case Study
Developing Customer Portal with Oracle APEX - A Case Study
Toronto-Oracle-Users-Group
 
Dean Thrasher - Beyond CRM Integration: Salesforce As Content Gatekeeper on S...
Dean Thrasher - Beyond CRM Integration: Salesforce As Content Gatekeeper on S...Dean Thrasher - Beyond CRM Integration: Salesforce As Content Gatekeeper on S...
Dean Thrasher - Beyond CRM Integration: Salesforce As Content Gatekeeper on S...
SUGCON
 
Automating SQL Server Database Creation for SharePoint
Automating SQL Server Database Creation for SharePointAutomating SQL Server Database Creation for SharePoint
Automating SQL Server Database Creation for SharePoint
Talbott Crowell
 
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Support Tools für die Admin-KonsoleAlfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Software
 
Endeca Performance Considerations
Endeca Performance ConsiderationsEndeca Performance Considerations
Endeca Performance Considerations
Cirrus10
 
Oracle Application Express
Oracle Application ExpressOracle Application Express
Oracle Application Express
HBoone
 
Oracle ATG Commerce - Launch Management Framework
Oracle ATG Commerce - Launch Management FrameworkOracle ATG Commerce - Launch Management Framework
Oracle ATG Commerce - Launch Management Framework
Keyur Shah
 
rad 255 test overview
rad 255 test overviewrad 255 test overview
rad 255 test overview
Sevajothi Crafts
 
Introducing Office Web Apps as a Tool for Developing Content Rich Applications
Introducing Office Web Apps as a Tool for Developing Content Rich ApplicationsIntroducing Office Web Apps as a Tool for Developing Content Rich Applications
Introducing Office Web Apps as a Tool for Developing Content Rich Applications
Ryan McIntyre
 
Peter Ward: The True Power of SharePoint Designer Workflows
Peter Ward: The True Power of SharePoint Designer WorkflowsPeter Ward: The True Power of SharePoint Designer Workflows
Peter Ward: The True Power of SharePoint Designer Workflows
SharePoint Saturday NY
 
Getting Started with the WSO2 manager
Getting Started with the WSO2  managerGetting Started with the WSO2  manager
Getting Started with the WSO2 manager
WSO2
 
Tutorial: Building Business Solutions: InfoPath & Workflows by Jennifer Mason...
Tutorial: Building Business Solutions: InfoPath & Workflows by Jennifer Mason...Tutorial: Building Business Solutions: InfoPath & Workflows by Jennifer Mason...
Tutorial: Building Business Solutions: InfoPath & Workflows by Jennifer Mason...
SPTechCon
 
Developing for SharePoint Online
Developing for SharePoint OnlineDeveloping for SharePoint Online
Developing for SharePoint Online
Ari Bakker
 
SharePoint 2016 Adoption - Lessons Learned and Advanced Troubleshooting
SharePoint 2016 Adoption - Lessons Learned and Advanced TroubleshootingSharePoint 2016 Adoption - Lessons Learned and Advanced Troubleshooting
SharePoint 2016 Adoption - Lessons Learned and Advanced Troubleshooting
John Calvert
 
Introduction about Alfresco webscript
Introduction about Alfresco webscriptIntroduction about Alfresco webscript
Introduction about Alfresco webscript
Muralidharan Deenathayalan
 
Alfresco share 4.1 to 4.2 customisation
Alfresco share 4.1 to 4.2 customisationAlfresco share 4.1 to 4.2 customisation
Alfresco share 4.1 to 4.2 customisation
Muralidharan Deenathayalan
 
Building a Java Play! App on Heroku using Database.com
Building a Java Play! App on Heroku using Database.comBuilding a Java Play! App on Heroku using Database.com
Building a Java Play! App on Heroku using Database.com
Salesforce Developers
 
SharePoint Intersections - SP11 - SharePoint and IaaS - The OnPrem in the Cloud
SharePoint Intersections - SP11 - SharePoint and IaaS - The OnPrem in the CloudSharePoint Intersections - SP11 - SharePoint and IaaS - The OnPrem in the Cloud
SharePoint Intersections - SP11 - SharePoint and IaaS - The OnPrem in the Cloud
Dan Usher
 
JahiaOne - New Product Line Up -Part 2
JahiaOne - New Product Line Up -Part 2JahiaOne - New Product Line Up -Part 2
JahiaOne - New Product Line Up -Part 2
Jahia Solutions Group
 

What's hot (20)

Non SharePoint Deployment
Non SharePoint DeploymentNon SharePoint Deployment
Non SharePoint Deployment
 
Developing Customer Portal with Oracle APEX - A Case Study
Developing Customer Portal with Oracle APEX - A Case StudyDeveloping Customer Portal with Oracle APEX - A Case Study
Developing Customer Portal with Oracle APEX - A Case Study
 
Dean Thrasher - Beyond CRM Integration: Salesforce As Content Gatekeeper on S...
Dean Thrasher - Beyond CRM Integration: Salesforce As Content Gatekeeper on S...Dean Thrasher - Beyond CRM Integration: Salesforce As Content Gatekeeper on S...
Dean Thrasher - Beyond CRM Integration: Salesforce As Content Gatekeeper on S...
 
Automating SQL Server Database Creation for SharePoint
Automating SQL Server Database Creation for SharePointAutomating SQL Server Database Creation for SharePoint
Automating SQL Server Database Creation for SharePoint
 
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Support Tools für die Admin-KonsoleAlfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
 
Endeca Performance Considerations
Endeca Performance ConsiderationsEndeca Performance Considerations
Endeca Performance Considerations
 
Oracle Application Express
Oracle Application ExpressOracle Application Express
Oracle Application Express
 
Oracle ATG Commerce - Launch Management Framework
Oracle ATG Commerce - Launch Management FrameworkOracle ATG Commerce - Launch Management Framework
Oracle ATG Commerce - Launch Management Framework
 
rad 255 test overview
rad 255 test overviewrad 255 test overview
rad 255 test overview
 
Introducing Office Web Apps as a Tool for Developing Content Rich Applications
Introducing Office Web Apps as a Tool for Developing Content Rich ApplicationsIntroducing Office Web Apps as a Tool for Developing Content Rich Applications
Introducing Office Web Apps as a Tool for Developing Content Rich Applications
 
Peter Ward: The True Power of SharePoint Designer Workflows
Peter Ward: The True Power of SharePoint Designer WorkflowsPeter Ward: The True Power of SharePoint Designer Workflows
Peter Ward: The True Power of SharePoint Designer Workflows
 
Getting Started with the WSO2 manager
Getting Started with the WSO2  managerGetting Started with the WSO2  manager
Getting Started with the WSO2 manager
 
Tutorial: Building Business Solutions: InfoPath & Workflows by Jennifer Mason...
Tutorial: Building Business Solutions: InfoPath & Workflows by Jennifer Mason...Tutorial: Building Business Solutions: InfoPath & Workflows by Jennifer Mason...
Tutorial: Building Business Solutions: InfoPath & Workflows by Jennifer Mason...
 
Developing for SharePoint Online
Developing for SharePoint OnlineDeveloping for SharePoint Online
Developing for SharePoint Online
 
SharePoint 2016 Adoption - Lessons Learned and Advanced Troubleshooting
SharePoint 2016 Adoption - Lessons Learned and Advanced TroubleshootingSharePoint 2016 Adoption - Lessons Learned and Advanced Troubleshooting
SharePoint 2016 Adoption - Lessons Learned and Advanced Troubleshooting
 
Introduction about Alfresco webscript
Introduction about Alfresco webscriptIntroduction about Alfresco webscript
Introduction about Alfresco webscript
 
Alfresco share 4.1 to 4.2 customisation
Alfresco share 4.1 to 4.2 customisationAlfresco share 4.1 to 4.2 customisation
Alfresco share 4.1 to 4.2 customisation
 
Building a Java Play! App on Heroku using Database.com
Building a Java Play! App on Heroku using Database.comBuilding a Java Play! App on Heroku using Database.com
Building a Java Play! App on Heroku using Database.com
 
SharePoint Intersections - SP11 - SharePoint and IaaS - The OnPrem in the Cloud
SharePoint Intersections - SP11 - SharePoint and IaaS - The OnPrem in the CloudSharePoint Intersections - SP11 - SharePoint and IaaS - The OnPrem in the Cloud
SharePoint Intersections - SP11 - SharePoint and IaaS - The OnPrem in the Cloud
 
JahiaOne - New Product Line Up -Part 2
JahiaOne - New Product Line Up -Part 2JahiaOne - New Product Line Up -Part 2
JahiaOne - New Product Line Up -Part 2
 

Viewers also liked

Introducing Sitecore Habitat - SUGCON EU 2016
Introducing Sitecore Habitat - SUGCON EU 2016Introducing Sitecore Habitat - SUGCON EU 2016
Introducing Sitecore Habitat - SUGCON EU 2016
Ruud van Falier
 
Social connected module and sitecore (facebook)
Social connected module and sitecore (facebook) Social connected module and sitecore (facebook)
Social connected module and sitecore (facebook)
Anindita Bhattacharya
 
Leveraging Sitecore to Create a Completely Connected Customer Experience
Leveraging Sitecore to Create a Completely Connected Customer ExperienceLeveraging Sitecore to Create a Completely Connected Customer Experience
Leveraging Sitecore to Create a Completely Connected Customer Experience
Avtex
 
An Under-the-Hood Tour of Sitecore Experience Accelerator
An Under-the-Hood Tour of Sitecore Experience AcceleratorAn Under-the-Hood Tour of Sitecore Experience Accelerator
An Under-the-Hood Tour of Sitecore Experience Accelerator
Sitecore
 
Following Component Architecture in Sitecore solutions - Anders Laub @ SUGCON...
Following Component Architecture in Sitecore solutions - Anders Laub @ SUGCON...Following Component Architecture in Sitecore solutions - Anders Laub @ SUGCON...
Following Component Architecture in Sitecore solutions - Anders Laub @ SUGCON...
Anders Laub Christoffersen
 
24 Sitecore Tips that Every Sitecore Architect Needs to Know
24 Sitecore Tips that Every Sitecore Architect Needs to Know24 Sitecore Tips that Every Sitecore Architect Needs to Know
24 Sitecore Tips that Every Sitecore Architect Needs to Know
Ashish Bansal
 
Understanding the Sitecore Architecture
Understanding the Sitecore ArchitectureUnderstanding the Sitecore Architecture
Understanding the Sitecore Architecture
Pieter Brinkman
 
Introducing Sitecore - The Experience Platform
Introducing Sitecore - The Experience PlatformIntroducing Sitecore - The Experience Platform
Introducing Sitecore - The Experience Platform
Adrian IORGU
 

Viewers also liked (8)

Introducing Sitecore Habitat - SUGCON EU 2016
Introducing Sitecore Habitat - SUGCON EU 2016Introducing Sitecore Habitat - SUGCON EU 2016
Introducing Sitecore Habitat - SUGCON EU 2016
 
Social connected module and sitecore (facebook)
Social connected module and sitecore (facebook) Social connected module and sitecore (facebook)
Social connected module and sitecore (facebook)
 
Leveraging Sitecore to Create a Completely Connected Customer Experience
Leveraging Sitecore to Create a Completely Connected Customer ExperienceLeveraging Sitecore to Create a Completely Connected Customer Experience
Leveraging Sitecore to Create a Completely Connected Customer Experience
 
An Under-the-Hood Tour of Sitecore Experience Accelerator
An Under-the-Hood Tour of Sitecore Experience AcceleratorAn Under-the-Hood Tour of Sitecore Experience Accelerator
An Under-the-Hood Tour of Sitecore Experience Accelerator
 
Following Component Architecture in Sitecore solutions - Anders Laub @ SUGCON...
Following Component Architecture in Sitecore solutions - Anders Laub @ SUGCON...Following Component Architecture in Sitecore solutions - Anders Laub @ SUGCON...
Following Component Architecture in Sitecore solutions - Anders Laub @ SUGCON...
 
24 Sitecore Tips that Every Sitecore Architect Needs to Know
24 Sitecore Tips that Every Sitecore Architect Needs to Know24 Sitecore Tips that Every Sitecore Architect Needs to Know
24 Sitecore Tips that Every Sitecore Architect Needs to Know
 
Understanding the Sitecore Architecture
Understanding the Sitecore ArchitectureUnderstanding the Sitecore Architecture
Understanding the Sitecore Architecture
 
Introducing Sitecore - The Experience Platform
Introducing Sitecore - The Experience PlatformIntroducing Sitecore - The Experience Platform
Introducing Sitecore - The Experience Platform
 

Similar to Maintainable Sitecore Solutions

Sitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixSitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helix
Peter Nazarov
 
Envision IT - Application Lifecycle Management for SharePoint in the Enterprise
Envision IT - Application Lifecycle Management for SharePoint in the EnterpriseEnvision IT - Application Lifecycle Management for SharePoint in the Enterprise
Envision IT - Application Lifecycle Management for SharePoint in the Enterprise
Envision IT
 
SPSDenver - Wrapping Your Head Around the SharePoint Beast
SPSDenver - Wrapping Your Head Around the SharePoint BeastSPSDenver - Wrapping Your Head Around the SharePoint Beast
SPSDenver - Wrapping Your Head Around the SharePoint Beast
Mark Rackley
 
SXA in action
SXA in actionSXA in action
SXA in action
pratik satikunvar
 
SRC 204 - Build a SharePoint 2013 Search Driven Application!
SRC 204 - Build a SharePoint 2013 Search Driven Application!SRC 204 - Build a SharePoint 2013 Search Driven Application!
SRC 204 - Build a SharePoint 2013 Search Driven Application!
Brian Culver
 
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
BIWUG
 
Spsbe using js-linkanddisplaytemplates
Spsbe   using js-linkanddisplaytemplatesSpsbe   using js-linkanddisplaytemplates
Spsbe using js-linkanddisplaytemplates
Paul Hunt
 
SUG Bangalore - Overview of Sitecore Experience Accelerator with Pratik Satik...
SUG Bangalore - Overview of Sitecore Experience Accelerator with Pratik Satik...SUG Bangalore - Overview of Sitecore Experience Accelerator with Pratik Satik...
SUG Bangalore - Overview of Sitecore Experience Accelerator with Pratik Satik...
Anindita Bhattacharya
 
2/15/2012 - Wrapping Your Head Around the SharePoint Beast
2/15/2012 - Wrapping Your Head Around the SharePoint Beast2/15/2012 - Wrapping Your Head Around the SharePoint Beast
2/15/2012 - Wrapping Your Head Around the SharePoint Beast
Mark Rackley
 
Using js link and display templates
Using js link and display templatesUsing js link and display templates
Using js link and display templates
Paul Hunt
 
Best Practices with Sitecore
Best Practices with SitecoreBest Practices with Sitecore
Best Practices with Sitecore
Anant Corporation
 
Product Catalog and IT Service Management
Product Catalog and IT Service ManagementProduct Catalog and IT Service Management
Product Catalog and IT Service Management
Drew Madelung
 
SUGUK Cambridge - Display Templates & JSLink for IT Pros
SUGUK Cambridge - Display Templates & JSLink for IT ProsSUGUK Cambridge - Display Templates & JSLink for IT Pros
SUGUK Cambridge - Display Templates & JSLink for IT Pros
Paul Hunt
 
#SPSLondon - Session 2 JSLink for IT Pros
#SPSLondon - Session 2 JSLink for IT Pros#SPSLondon - Session 2 JSLink for IT Pros
#SPSLondon - Session 2 JSLink for IT Pros
Paul Hunt
 
JSLink for ITPros - SharePoint Saturday Jersey
JSLink for ITPros - SharePoint Saturday JerseyJSLink for ITPros - SharePoint Saturday Jersey
JSLink for ITPros - SharePoint Saturday Jersey
Paul Hunt
 
CUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in ShareCUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in Share
Alfresco Software
 
Share point 2013 Building Websites
Share point 2013 Building WebsitesShare point 2013 Building Websites
Share point 2013 Building Websites
Suhas R Satish
 
Cross Site Collection Navigation using SPFx, Powershell PnP & PnP-JS
Cross Site Collection Navigation using SPFx, Powershell PnP & PnP-JSCross Site Collection Navigation using SPFx, Powershell PnP & PnP-JS
Cross Site Collection Navigation using SPFx, Powershell PnP & PnP-JS
Thomas Daly
 
Session 1 branding and site development in SharePoint
Session 1   branding and site development in SharePointSession 1   branding and site development in SharePoint
Session 1 branding and site development in SharePoint
Khoa Quach
 
SharePoint Saturday Utah 2015 - SP2013 Search Driven Sites
SharePoint Saturday Utah 2015 - SP2013 Search Driven SitesSharePoint Saturday Utah 2015 - SP2013 Search Driven Sites
SharePoint Saturday Utah 2015 - SP2013 Search Driven Sites
Brian Culver
 

Similar to Maintainable Sitecore Solutions (20)

Sitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixSitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helix
 
Envision IT - Application Lifecycle Management for SharePoint in the Enterprise
Envision IT - Application Lifecycle Management for SharePoint in the EnterpriseEnvision IT - Application Lifecycle Management for SharePoint in the Enterprise
Envision IT - Application Lifecycle Management for SharePoint in the Enterprise
 
SPSDenver - Wrapping Your Head Around the SharePoint Beast
SPSDenver - Wrapping Your Head Around the SharePoint BeastSPSDenver - Wrapping Your Head Around the SharePoint Beast
SPSDenver - Wrapping Your Head Around the SharePoint Beast
 
SXA in action
SXA in actionSXA in action
SXA in action
 
SRC 204 - Build a SharePoint 2013 Search Driven Application!
SRC 204 - Build a SharePoint 2013 Search Driven Application!SRC 204 - Build a SharePoint 2013 Search Driven Application!
SRC 204 - Build a SharePoint 2013 Search Driven Application!
 
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
 
Spsbe using js-linkanddisplaytemplates
Spsbe   using js-linkanddisplaytemplatesSpsbe   using js-linkanddisplaytemplates
Spsbe using js-linkanddisplaytemplates
 
SUG Bangalore - Overview of Sitecore Experience Accelerator with Pratik Satik...
SUG Bangalore - Overview of Sitecore Experience Accelerator with Pratik Satik...SUG Bangalore - Overview of Sitecore Experience Accelerator with Pratik Satik...
SUG Bangalore - Overview of Sitecore Experience Accelerator with Pratik Satik...
 
2/15/2012 - Wrapping Your Head Around the SharePoint Beast
2/15/2012 - Wrapping Your Head Around the SharePoint Beast2/15/2012 - Wrapping Your Head Around the SharePoint Beast
2/15/2012 - Wrapping Your Head Around the SharePoint Beast
 
Using js link and display templates
Using js link and display templatesUsing js link and display templates
Using js link and display templates
 
Best Practices with Sitecore
Best Practices with SitecoreBest Practices with Sitecore
Best Practices with Sitecore
 
Product Catalog and IT Service Management
Product Catalog and IT Service ManagementProduct Catalog and IT Service Management
Product Catalog and IT Service Management
 
SUGUK Cambridge - Display Templates & JSLink for IT Pros
SUGUK Cambridge - Display Templates & JSLink for IT ProsSUGUK Cambridge - Display Templates & JSLink for IT Pros
SUGUK Cambridge - Display Templates & JSLink for IT Pros
 
#SPSLondon - Session 2 JSLink for IT Pros
#SPSLondon - Session 2 JSLink for IT Pros#SPSLondon - Session 2 JSLink for IT Pros
#SPSLondon - Session 2 JSLink for IT Pros
 
JSLink for ITPros - SharePoint Saturday Jersey
JSLink for ITPros - SharePoint Saturday JerseyJSLink for ITPros - SharePoint Saturday Jersey
JSLink for ITPros - SharePoint Saturday Jersey
 
CUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in ShareCUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in Share
 
Share point 2013 Building Websites
Share point 2013 Building WebsitesShare point 2013 Building Websites
Share point 2013 Building Websites
 
Cross Site Collection Navigation using SPFx, Powershell PnP & PnP-JS
Cross Site Collection Navigation using SPFx, Powershell PnP & PnP-JSCross Site Collection Navigation using SPFx, Powershell PnP & PnP-JS
Cross Site Collection Navigation using SPFx, Powershell PnP & PnP-JS
 
Session 1 branding and site development in SharePoint
Session 1   branding and site development in SharePointSession 1   branding and site development in SharePoint
Session 1 branding and site development in SharePoint
 
SharePoint Saturday Utah 2015 - SP2013 Search Driven Sites
SharePoint Saturday Utah 2015 - SP2013 Search Driven SitesSharePoint Saturday Utah 2015 - SP2013 Search Driven Sites
SharePoint Saturday Utah 2015 - SP2013 Search Driven Sites
 

Recently uploaded

UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
Federico Razzoli
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
David Brossard
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 

Recently uploaded (20)

UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 

Maintainable Sitecore Solutions

  • 1. SPECIALISTS ON DESIGNING, IMPLEMENTING AND SCALING CUSTOM SOLUTIONS BASED ON SITECORE CMS Building Maintainable Sitecore Solutions Proven practices for Sitecore team development Thomas Eldblom CTO Pentia A/S
  • 2.
  • 3. How to Serve Sitecore
  • 6. Layouts Templates Sublayouts .NET code CSS & Design files Settings in Sitecore XSLT RenderingsConfig files Content structure
  • 7. How to build maintainable Sitecore solutions • Component architecture • Using consistent structure and naming. • Use version control. • Separate custom functionality from standard functionality. • Automate configuration file generation. • Automate trivial tasks.
  • 8. Component Architecture • Function before type • Agile design principle – Logically grouped functionality based on cohesion. – Releasable and reusable modules. – Focus on reusability as well as maintainability. • Simple component architecture – Structure data logically across systems “A way must exist to deal with groups of classes, otherwise it’s almost like build a sand castle from individual grains of sand” Robert C. Martin (Uncle Bob)
  • 9.
  • 10. Component breakdown • Breaking down the related functionality of the website • Focus on cohesion in each component • Think of the concern/domain of each component – Do the component solve a general functionality? – Do the component solve a project specific functionality?
  • 12. Navigation Products Search Spots Component Breakdown Identity • Product data • Product presentation • Menus • Sitemap • Search boxes • Search results • Indexing • Corporate identity • Header logo • Footer disclaimer • Related information • Global marketing boxes
  • 13. Component coupling • Defines references between components • Consider each reference made – Both hard (in code) and loose (in strings) – Define new components to avoid references • Specific components should reference general components – Stable-Dependencies Principle • Avoid circular references – Acyclic Dependencies Principle • Use coding patterns to avoid high coupling
  • 14. Component Coupling – the common but wrong way • Product data • Product presentation • Menus • Sitemap • Search boxes • Search results • Indexing • Corporate identity • Header logo • Footer disclaimer • Related information • Global marketing boxes • Product list page type • Sitemap page type • Search results page type Navigation Products Search Spots Identity
  • 15. ProductsProducts Component Coupling – the common but wrong way • Product data • Product presentation • Menus • Sitemap • Search boxes • Search results • Indexing • Corporate identity • Header logo • Footer disclaimer • Related information • Global marketing boxes • Product list page type • Sitemap page type • Search results page type Navigation Products Search Spots Identity
  • 16. ProductsProductsProducts DesignPage types Component Coupling – the right way Navigation Search Spots Identity • Product list page type • Sitemap page • Search results page
  • 18. Consistent structure and naming • Apply naming conventions – Be consistent with terms. – Use your naming convention across systems. • Folder structure • Visual Studio Projects/Assemblies • Sitecore Templates • Layouts, rendering, sublayouts etc.
  • 19.
  • 20. Advanced component architecture • High cohesion/Low coupling • Design Principles – Reuse/Release Equivalence Principle – Common Reuse Principle – Common Closure Principle – Acyclic Dependencies Principle – Stable-Dependencies Principle – Stable-Abstractions Principle • IoC containers • and so on… Agile Principles, Patterns, and Practices in C# Robert C. Martin Micah Martin ISBN-10: 0131857258
  • 21. Use version control • ”Single source of the truth” • Version everything – Component structure – Code – Layouts and renderings – Templates – Configuration changes – and so on… • How? – Subversion, Microsoft TFS, you name it… – Use Sitecore item serialization or Sitecore TDS
  • 22. Separate custom functionality from standard functionality. • Keep track of what belongs to: – Your solution – Sitecore (versioned) – Sitecore modules – Third party modules • How? – Separate your solution from standard functionality in version control. – Implement one-click deployment. • Team Development for Sitecore. • Web Applications in Visual Studio
  • 23. How we do it • The Pentia Build System and Build Library • Central repository containing: – All Sitecore versions, modules, patches etc. – Third party modules – Pentia shared functionality • Automated via nAnt – Copies referenced modules locally – Generates database scripts
  • 24.
  • 27. Website Backend Publishing Website Backend Publishing Website Backend Publishing ProductionQATest
  • 28. Automate configuration file generation • Sitecore config includes – Located in App_ConfigInclude – Only works on <sitecore> section – Not environment specific – /sitecore/admin/showconfig.aspx • Visual Studio 2010 config transformation – Environment specific merges – Only available with web.config (in Visual Studio)
  • 29.
  • 30. Resources • http://www.pentia.net/professional-services • Books: – Agile Principles, Patterns, and Practices in C# • Robert C. Martin & Micah Martin • ISBN-10: 0131857258 – Clean Code: A Handbook of Agile Software Craftsmanship • Robert C. Martin • ISBN-10: 0132350882 • Sites: – Blog - Molten Core: http://mcore.wordpress.net – Learn Sitecore: http://learnsitecore.cmsuniverse.net

Editor's Notes

  1. Introduce self and Dan Introduce Pentia Introduce topic
  2. Sitecore has the ingredients to make good solutions Ingredients can be put together in many ways Does not mean that the quality suffers, merely the type of dishes you serve to the customers
  3. Sitecore partners compares to a restaurant
  4. Paella – good food Question: How many have actually complained about food in a restaurant? The customer will want things different, different ingredients etc. Agile projects
  5. Lets talk about the cost of maintenance ”cost” != money. Maintaining old and bad code is not fun and will make your developers quit. The cost of changes will go up – no matter what you do Technical debt/code rot/Obsolete software/Person changes The cost goes up, even if you don't change anything The aim is to make this cost incline as small as possible * PAUSE * Sitecore is built for: * Ease of use. * Rapid development. * Flat learning curve. * Content editing.
  6. The Sitecore ingredients: Layouts Templates Sublayouts XSLT Settings And so on. These areas are not only distributed out over Sitecore, but also outside Sitecore in other systems. Making functionality in Sitecore means toucing many of these areas. And making solutions the standard way in Sitecore means distributing Solution clutter = high cost of maintenance Customer will always want to change features – not types
  7. Component architecture is about placing things that belong together, together Components makes maintenance cost lower
  8. Naming conventions are the simplest and most important way to achieve maintainability in Sitecore Component architecture is more challenging with Sitecore since we have data distributed over more systems
  9. Simple naming convensions go a long way
  10. Taking the next step…
  11. Place your valuables one in place
  12. Many and large configuration files in Sitecore Over 3000 lines in web.config 20 config files in default Sitecore
  13. You can maintain these files manually – if you are a wizard …but eventually you will get bored and leave :-)
  14. Keeping configuration changes with the code they belong to