5. Where shall I start?
• Read Upgrade Guide on dev.sitecore.net?
• Follow steps from Upgrade Guide on your local machine?
This is likely not going to work on a large solution
7. How long will it take?
• «It depends» (but not by Monday!)
• Customizations (Speak-Apps, Custom dialogs,…)
• Modules (EXM, WFFM, Commerce, 3rd party)
• Complexity of codebase
• Complexity of environments / roles (Staging, QA, Processing)
Plan for several sprints
8. Project planning
Migrate Codebase
Migrate Data
Migrate
Infrastructure
Partial
Regression
testing
Regression
testing
Load testing
Final testing
Go live
Migrate Codebase
Migrate
Infrastructure
Migrate Data
Upgrade Modules
Content Freeze
Repeat as needed
Disable modules at first
9. Expect things to fail!
• Smoke tests are not enough!
• Thorough regression testing
• Authoring functionality
• Modules and 3rd party code
• Customizations (Dialogs, Ribbons, Pipelines…)
• In-depth technical testing
• Load tests
• Log analysis
• Background jobs
• Indexing
• xConnect
• Monitoring tools
• Disaster recovery plans
10. Expect things to fail!
• Manage expectations of Business users and Stakeholders
12. Express or Standard?
• Express Migration Tool
https://dev.sitecore.net/Downloads/Express_Migration_Tool.aspx
• Applies to Sitecore 6.6,7.2, 7.5 or 8.0
• Migrates content items and media
• Migrates All users, roles and security permissions
• Assists with configuration migrations
• Migrates Web Forms For Marketers items and data
• Update Package (Standard)
• Applies to Sitecore 8.1, 8.2, 9.x
• Migates master + core databases
• Assists with configuration migrations
• No WFFM migration
13. Update Package
• All required steps are described in the
Upgrade Guide of the version you’re upgrading to
Must read and follow!!
• Package Installation Wizard
• Assists with config transformations
• Migrates databases
• Warns if modified items will be overwritten
• Warns if items are missing
• Warns if deprecated API is used (less useful)
14. Update Package
• Speed up things
1. Set up a clean Sitecore solution with
same revision as yours (i.E. 8.1 Update-2)
2. Point connection strings to core + master
database that need to be upgraded
3. Run Update Package only with option
«Install items»
300GB Master database in 45mins
15. Migrate xDB to xConnect
• Use xDB Data Migration Tool
• Process will take several days!
• Likely to fail
• Backup plan?
• Identify exactly what data Business needs
• Manually extract specific data from MongoDB and
create xConnect interactions / contacts
• Dump all other data
xDB
Useful data Other data
17. Apply best Practices first
• Always patch configs, never change them directly Helix Docs
• Separate implementation files from standard frameworks and
files
• Separate repository from webroot Helix Docs
18. Update dependencies
• Update Target framework
• Use Nuget Packages from
sitecore.myget.org
• Use .NoReferences packages!
• Good practice:
Remove all Sitecore dlls from your repo
• Update common Nuget packages to match versions used by
Sitecore
• Newtonsoft.json
• Antlr
• …
• Apply Assembly redirects in web.config
19. Cleanup Support dlls/patches
• Remove all obsolete Sitecore Support patches
• Patch configs
• References in Items
• Files (i.E. override xmls)
• How do I know if it is obsolete?
• Not always easy
• My Documentaion of Support Tickets
• Sitecore Support Github
https://github.com/SitecoreSupport/
• Sitecore Release notes
• Decompile code of Support dll
20. Apply API changes
• xDB Identify() new source field
• xDB Facets
• Caution: Code will still compile and work, but facets aren’t saved after session
ends. Saving facets needs to be done through xConnect
Details
Dynamic placeholders
Migrate with Powershell depending on your implementation Example
• Most API changes around Sitecore 8.2
• IoC Details
• Caching Details
• Code in Globals.asax ignored Use initialize pipeline instead
21. Apply config changes
• New layered configuration Details
• Sitecore
• Modules
• Custom (include)
• Environment
Do not touch!
Your config goes here
22. Apply config changes
• Rule-based config Details
• No need for custom config transformation for CM/CD/Processing,…
• Preview config transformations with new Admin Page «Show Config
Layers»
23. Apply config changes
• .patch.config files for modified Sitecore configs
• Manually check each .patch.config for plausibility
• Manally check if .patch.configs need to be required to specific role (CD
/ CM / …)
• SOLR Config changes Details
• Example config provided in App_config/Include/Examples
• New DocumentOptions node
24. Modified Sitecore.config?
«You’re on your own, mate»
• Only configs in App_Config/Include are transformed to
.patch.config files
• Manually extract your config changes to patch configs
• Prefetch.config & Co Manually merge
26. Migrate WFFM
• When not using Express Migration, install update packages
Step-By-Step
• To 8.2 initial
UpgradePostSteps for 8.2 will fail! Use my Admin page instead
• To 9.0 initial
• To 9.0 Update-2
• Very little API change
28. Migrate EXM
• Email Experience Manager is now integrated into standard
installation
• Payed subscription still required though
• Migration tool for legacy lists to xConnect See documentation
30. New server requirements
• SQL Server 2016
• Solr 6 with SSL
• IIS
• SSL bindings
• Multiple hosts (xConnect, Site)
• Windows Services
Details see Upgrade Guide
31. MongoDB or SQL?
«It depends»
• SQL as data storage for xConnect
• No separate server to maintain
• SQL Server Know-how usually already in-house
• MongoDB hosting in cloud can be tricky
• MongoDB for xConnect
• Is officially supported since Sitecore 9.0 Update-2
33. Infrastructure
• Create SIF Scripts for each role
• Based on XP Scaled
• Protip: disable Database deployment in archive.xml of Web Deploy
packages
• Include your certificates
• Extend monitoring
• xConnect endpoint
• Marketing Automation service
34. SOLR Managed Schema
• New managed schema Details
• Still possible to use legacy
schema.xml files Details
• Customizations on Schema
• Add / Remove / Modify field types and fields Solr docs
• Blogpost with example implementation Details
36. Key takeaways
• Applying best practices helps greatly with upgrades
• Expect things to fail: Thorough testing is required
• Splitting Upgrade process into separate steps makes process
more manageable
• Migrating xDB data to xConnect is currently shaky