Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Complex Joomla! Migrations 
JoomlaDay Deutschland 2014 
Sander Potjer - @sanderpotjer - Joomla! Community Leadership Team
Sander Potjer 
! 
Involved in the local Dutch Joomla community 
Joomla Community Leadership Team (CLT) member 
Company: Pe...
Sander Potjer 
! 
Involved in the local Dutch Joomla community 
Joomla Community Leadership Team (CLT) member 
Company: Pe...
Complex Joomla Migrations
Joomla Version Number
3.3.3
3.3.3 
[major].[minor].[maintenance]
3.3.3 
[major].[minor].[maintenance] 
(An increment of the major number generally indicates a major rework or rewrite of t...
3.3.3 
[major].[minor].[maintenance] 
(An increment of the minor number usually indicates a significant change in function...
3.3.3 
[major].[minor].[maintenance] 
(An increment of the maintenance number usually indicates bug fixing within the mino...
2.5.2 vs 2.5.19
2.5.2 < 2.5.19
Joomla Version History
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
1.0 
1.0.15
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
1.0.15 
1.5.26
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
1.0.15 
1.5.26 
1.6.6
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
1.0 
1.0.1...
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
Simplify Things
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
Supported Joomla Versions
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
Joomla 1
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
Joomla 1 
Unsupported: migrate
Joomla 2
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
Joomla 2 
Use latest version: 2.5.24
Joomla 3
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
Joomla 3 
Use latest version: 3.3.3
Migration. Upgrade. Update.
3.3.3 
Migration.Upgrade.Update
3.3.3 
[major].[minor].[maintenance]
3.0.0 
[major].[minor].[maintenance] 
(Can be incompatible with prior major releases.)
3.3.0 
[major].[minor].[maintenance] 
(Moderate to high level of backward compatibility with previous minor increments.)
3.3.3 
[major].[minor].[maintenance] 
(Fully backward compatible with previous maintenance increments.)
Upgrade Strategy
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 
Joomla 1.0 
Joom1.l0a 1.5 
Joomla 1.6 
Joomla 1.7 
Joom1.l0a ...
Joomla 1 -> Joomla 2 or 3
Joomla 2 -> Joomla 3
Joomla versions are as simple as
Joomla versions are as simple as 
Joomla 1 = upgrade your site
Joomla versions are as simple as 
Joomla 1 = upgrade your site 
Joomla 2 = use latest version
Joomla versions are as simple as 
Joomla 1 = upgrade your site 
Joomla 2 = use latest version 
Joomla 3 = use latest versi...
Joomla 1 = upgrade your site
Migrations
Migration Questions
1 : 1 migration?
Frustrations?
Wishes?
Unused?
Extensions Available?
Better Alternatives?
3 Types of Migrations
Easy 
Type: static sites 
Freeze: 1 week or more 
Downtime: not relevant 
Preparations: none, replace when ready
Hard 
Type: dynamic sites 
Freeze: max. 1 week 
Downtime: max. 1 hour 
Preparations: as much as possible
Complicated 
Type: very dynamic & high traffic sites 
Freeze: max. 1 day 
Downtime: each minute costs money 
Preparations:...
Tips for any 
Joomla Migration
-> 
Choose Joomla 3
Test Backup!
Clean up
Empty Trash
Database Fix
Error Reporting Maximum
Same Environment
Test 
Test 
Test 
Test 
Test 
Test
Typical Migration Process
1. Backup
1. Backup 
2. Create copy of website (www.site.com/15)
1. Backup 
2. Create copy of website (www.site.com/15) 
3. Install new Joomla version (www.site.com/3)
1. Backup 
2. Create copy of website (www.site.com/15) 
3. Install new Joomla version (www.site.com/3) 
4. Migrate website...
1. Backup 
2. Create copy of website (www.site.com/15) 
3. Install new Joomla version (www.site.com/3) 
4. Migrate website...
1. Backup 
2. Create copy of website (www.site.com/15) 
3. Install new Joomla version (www.site.com/3) 
4. Migrate website...
1. Backup 
2. Create copy of website (www.site.com/15) 
3. Install new Joomla version (www.site.com/3) 
4. Migrate website...
1. Backup 
2. Create copy of website (www.site.com/15) 
3. Install new Joomla version (www.site.com/3) 
4. Migrate website...
Case: 
Complex Migration Request
Case: 
Complex Migration Request
Case: 
Complex Migration Request 
- Migration within max 1,5 day freeze, max 2 hours 
downtime during evening hours 
- Ide...
1. Backup 
2. Create copy of website (www.site.com/15) 
3. Install new Joomla version (www.site.com/3) 
4. Migrate website...
1500 articles 
650 menu-items 
950 modules 
20+ extensions
Setting Change Example 
Menu-Module 
! 
!
Setting Change Example 
Menu-Module 
! 
vs 
level 
Joomla 1.5 Joomla 2.5 
0-3 1-4
Record Database Changes
Create Custom Script 
www.site.com/migrate.php
Change Modules with ID’s 
223, 294 and 357
Change Modules with ID’s 
223, 294 and 357 
- “startLevel” of module with ID 233 is changed from 2 to 3. 
- “menutype” is ...
www.site.com/migrate.php 
define('_JEXEC', 1);! 
! 
// Connect with Joomla! 
define('JPATH_BASE', __DIR__);! 
require_once...
/**! www.site.com/migrate.php 
* Module changes! 
*/! 
! 
// Get the modules that need changes! 
$query = $db->getQuery(tr...
www.site.com/migrate.php 
// Change startLevel! 
if ($modules[233]->params->startLevel == 2)! 
{! 
!$modules[233]->params-...
www.site.com/migrate.php 
// Set menutype! 
if (empty($modules[294]->params->menutype))! 
{! 
!$modules[294]->params->menu...
www.site.com/migrate.php 
// Hide breadcrumb "You are here"! 
if (!$modules[357]->params->showHere)! 
{! 
!$modules[357]->...
www.site.com/migrate.php 
// Save new module params! 
foreach($modules as $id=>$module) ! 
{! 
!$params !!= json_encode($m...
Correct component specific
Correct component specific 
- set Access to 1 for all items in ZOO
www.site.com/migrate.php 
/**! 
* Component changes! 
*/! 
! 
// ZOO access fixes! 
$query !!= $db->getQuery(true);! 
$fie...
Custom Script Example 
https://gist.github.com/sanderpotjer/9311435
Clean Joomla 3 Base
Test
Adjust Custom Script
Test
Adjust Custom Script
Test
Adjust Custom Script
Migration Script 
(non code)
10:30 - 11:00 hour 
Migration day kickoff meeting
11:00 - 12:30 hour 
Exact.nl backup maken & compare: 
- Create Backup of Joomla 1.5 version 
- Install locally 
- Compare ...
11:00 - 12:30 hour 
Joomla 1.5 site preparations: 
- Empty categories trash 
- Empty articles trash 
- Empty menu trash 
-...
11:00 - 12:30 hour 
Joomla 2.5 site preparations: 
- Create new database with "clean" dataset (without 
exact.nl content d...
Lunch
13:00 - 16:00 hour 
Test migrations 
- Test migraties according "Migration Manual" 
- After test, restore as "Joomla 2.5 s...
13:00 - 16:00 hour 
Roll-out fixes 
- In case of issues, improve migration script 
! 
Prepare off-line page 
- Specific pa...
16:00 - 17:30 hour 
Final opportunity for content changes on live site 
- No content changes after 16:00 hour 
- Administr...
16:00 - 17:30 hour 
Final test migration 
- Final test migraties according "Migration Manual" 
! 
Final Joomla 2.5 site pr...
Pizza!
19:00 - 19:15 hour 
Final checks 
- Check if Joomla 1.5 site is ready 
- Check if Joomla 2.5 site is ready 
- Check databa...
19:15 - 19:30 hour 
Migrations www.exact.nl 
- Final migraties according "Migration Manual" 
- During this period www.exac...
19:30 - ? : ? hour 
Monitoring of www.exact.nl 
- Monitoring of migrated website 
- Apply small bug-fixes if needed 
- In ...
Celebrate!
Celebrate!
Migration 
Manual
1) Set exact.nl (Joomla 1.5) site off-line (+/- 0,5 minute)
2) Back-up Joomla 1.5 site (+/- 5 minutes)
3) SP Upgrade migration (+/- 1 minute) 
Data migration via SP Upgrade extension 
- Users 
- Content 
- Newsfeed 
- Menus 
...
4) Manual tables export, conversion & import (+/- 3 minutes) 
jos_advancedmodules 
jos_exactlog 
jos_exacttracking 
jos_ex...
5) Manual operations in 2.5 site (+/- 2 minutes) 
- Install Advanced Module Manager 
- Install RSEventsPro 
- Install RSFo...
5) Manual operations in 2.5 site (+/- 2 minutes) 
- Run Joomla Advanced Search (Finder) indexer 
- Fix Asset Issues with A...
6) Check result (+/- 2 minutes) 
Check migration result on www.exact.nl/25/
7) Move Joomla 1.5 site (+/- 0,5 minute) 
Move www.exact.nl to www.exact.nl/15/
8) Move Joomla 2.5 site (+/- 0,5 minute) 
Move www.exact.nl/25/ to www.exact.nl/
9) Adjust configuration.php paths (+/- 0,5 minute) 
Adjust the /tmp/ and /log/ folder paths in 
www.exact.nl/configuration...
10) Set exact.nl (Joomla 2.5) site on-line (+/- 0,5 minute)
Emergency 
Revert Manual
1) Set exact.nl (Joomla 2.5) site off-line (+/- 0,5 minute)
2) Move Joomla 2.5 site (+/- 0,5 minute) 
Move www.exact.nl to www.exact.nl/25/
3) Move Joomla 1.5 site (+/- 0,5 minute) 
Move www.exact.nl/15/ to www.exact.nl/
4) Adjust configuration.php paths (+/- 0,5 minute) 
Adjust the /tmp/ and /log/ folder paths in 
www.exact.nl/configuration...
5) Set exact.nl (Joomla 1.5) site on-line (+/- 0,5 minute)
Case Results: 
Complex Migration Request 
! 
freeze & downtime: 6 minutes
Case Results: 
Complex Migration Request 
! 
freeze & downtime: 6 minutes 
preparation time: 2-3 weeks
Resources 
Article: “Complex Joomla! 1.5 Migration With Minimal Downtime” 
http://magazine.joomla.org/issues/issue-mar-201...
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Complex Joomla! Migrations
Upcoming SlideShare
Loading in …5
×

Complex Joomla! Migrations

1,180 views

Published on

Joomla version numbering explained, best Joomla migration practices, tips and how to handle complex Joomla Migrations.

Published in: Technology
  • Be the first to comment

Complex Joomla! Migrations

  1. 1. Complex Joomla! Migrations JoomlaDay Deutschland 2014 Sander Potjer - @sanderpotjer - Joomla! Community Leadership Team
  2. 2. Sander Potjer ! Involved in the local Dutch Joomla community Joomla Community Leadership Team (CLT) member Company: Perfect Web Team ACL Manager developer E-mail: sander.potjer@community.joomla.org
  3. 3. Sander Potjer ! Involved in the local Dutch Joomla community Joomla Community Leadership Team (CLT) member Company: Perfect Web Team ACL Manager developer E-mail: sander.potjer@community.joomla.org Slides: www.sanderpotjer.nl
  4. 4. Complex Joomla Migrations
  5. 5. Joomla Version Number
  6. 6. 3.3.3
  7. 7. 3.3.3 [major].[minor].[maintenance]
  8. 8. 3.3.3 [major].[minor].[maintenance] (An increment of the major number generally indicates a major rework or rewrite of the code base)
  9. 9. 3.3.3 [major].[minor].[maintenance] (An increment of the minor number usually indicates a significant change in functionality.)
  10. 10. 3.3.3 [major].[minor].[maintenance] (An increment of the maintenance number usually indicates bug fixing within the minor release and possibly small enhancements and limited new features.)
  11. 11. 2.5.2 vs 2.5.19
  12. 12. 2.5.2 < 2.5.19
  13. 13. Joomla Version History
  14. 14. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016
  15. 15. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 1.0 1.0.15
  16. 16. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 1.0.15 1.5.26
  17. 17. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 1.0.15 1.5.26 1.6.6
  18. 18. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 1.0 1.0.15 1.5.26 1.6.6 1.7.5
  19. 19. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 1.0.15 1.5.26 1.6.6 1.7.5 2.5.19
  20. 20. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 1.0 1.0.15 1.5.26 1.6.6 1.7.5 2.5.19 3.0.4
  21. 21. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 1.0 1.0.15 1.5.26 1.6.6 1.7.5 2.5.19 3.0.4 3.1.6
  22. 22. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 1.0 1.0.15 1.5.26 1.6.6 1.7.5 2.5.19 3.0.4 3.1.6 3.2.3
  23. 23. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 1.0 1.0.15 1.5.26 1.6.6 1.7.5 2.5.19 3.0.4 3.1.6 3.2.3
  24. 24. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 Joom1.l0a 3.4 1.0.15 1.5.26 1.6.6 1.7.5 2.5.19 3.0.4 3.1.6 3.2.3
  25. 25. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 Joom1.l0a 3.4 Joomla 3.5 1.0 1.0.15 1.5.26 1.6.6 1.7.5 2.5.19 3.0.4 3.1.6 3.2.3
  26. 26. Simplify Things
  27. 27. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 Joom1.l0a 3.4 Joomla 3.5
  28. 28. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 Joom1.l0a 3.4 Joomla 3.5
  29. 29. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 Joom1.l0a 3.4 Joomla 3.5
  30. 30. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 Joom1.l0a 3.4 Joomla 3.5
  31. 31. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 Joom1.l0a 3.4 Joomla 3.5 Joomla 1
  32. 32. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 Joom1.l0a 3.4 Joomla 3.5 Joomla 1 Joomla 2
  33. 33. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 Joom1.l0a 3.4 Joomla 3.5 Joomla 1 Joomla 2 Joomla 3
  34. 34. Supported Joomla Versions
  35. 35. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 Joom1.l0a 3.4 Joomla 3.5
  36. 36. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 Joom1.l0a 3.4 Joomla 3.5
  37. 37. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 Joom1.l0a 3.4 Joomla 3.5
  38. 38. Joomla 1
  39. 39. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 Joom1.l0a 3.4 Joomla 3.5
  40. 40. Joomla 1 Unsupported: migrate
  41. 41. Joomla 2
  42. 42. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 Joom1.l0a 3.4 Joomla 3.5
  43. 43. Joomla 2 Use latest version: 2.5.24
  44. 44. Joomla 3
  45. 45. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 Joom1.l0a 3.4 Joomla 3.5
  46. 46. Joomla 3 Use latest version: 3.3.3
  47. 47. Migration. Upgrade. Update.
  48. 48. 3.3.3 Migration.Upgrade.Update
  49. 49. 3.3.3 [major].[minor].[maintenance]
  50. 50. 3.0.0 [major].[minor].[maintenance] (Can be incompatible with prior major releases.)
  51. 51. 3.3.0 [major].[minor].[maintenance] (Moderate to high level of backward compatibility with previous minor increments.)
  52. 52. 3.3.3 [major].[minor].[maintenance] (Fully backward compatible with previous maintenance increments.)
  53. 53. Upgrade Strategy
  54. 54. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 Joom1.l0a 3.4 Joomla 3.5
  55. 55. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 Joom1.l0a 3.4 Joomla 3.5
  56. 56. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 Joom1.l0a 3.4 Joomla 3.5
  57. 57. 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Joomla 1.0 Joom1.l0a 1.5 Joomla 1.6 Joomla 1.7 Joom1.l0a 2.5 Joomla 3.0 Joom1.l0a 3.1 Joom1.l0a 3.2 Joom1.l0a 3.3 Joom1.l0a 3.4 Joomla 3.5
  58. 58. Joomla 1 -> Joomla 2 or 3
  59. 59. Joomla 2 -> Joomla 3
  60. 60. Joomla versions are as simple as
  61. 61. Joomla versions are as simple as Joomla 1 = upgrade your site
  62. 62. Joomla versions are as simple as Joomla 1 = upgrade your site Joomla 2 = use latest version
  63. 63. Joomla versions are as simple as Joomla 1 = upgrade your site Joomla 2 = use latest version Joomla 3 = use latest version
  64. 64. Joomla 1 = upgrade your site
  65. 65. Migrations
  66. 66. Migration Questions
  67. 67. 1 : 1 migration?
  68. 68. Frustrations?
  69. 69. Wishes?
  70. 70. Unused?
  71. 71. Extensions Available?
  72. 72. Better Alternatives?
  73. 73. 3 Types of Migrations
  74. 74. Easy Type: static sites Freeze: 1 week or more Downtime: not relevant Preparations: none, replace when ready
  75. 75. Hard Type: dynamic sites Freeze: max. 1 week Downtime: max. 1 hour Preparations: as much as possible
  76. 76. Complicated Type: very dynamic & high traffic sites Freeze: max. 1 day Downtime: each minute costs money Preparations: very detailed & tested
  77. 77. Tips for any Joomla Migration
  78. 78. -> Choose Joomla 3
  79. 79. Test Backup!
  80. 80. Clean up
  81. 81. Empty Trash
  82. 82. Database Fix
  83. 83. Error Reporting Maximum
  84. 84. Same Environment
  85. 85. Test Test Test Test Test Test
  86. 86. Typical Migration Process
  87. 87. 1. Backup
  88. 88. 1. Backup 2. Create copy of website (www.site.com/15)
  89. 89. 1. Backup 2. Create copy of website (www.site.com/15) 3. Install new Joomla version (www.site.com/3)
  90. 90. 1. Backup 2. Create copy of website (www.site.com/15) 3. Install new Joomla version (www.site.com/3) 4. Migrate website data (.com/15 -> .com/3)
  91. 91. 1. Backup 2. Create copy of website (www.site.com/15) 3. Install new Joomla version (www.site.com/3) 4. Migrate website data (.com/15 -> .com/3) 5. Install Joomla 3 version of extensions
  92. 92. 1. Backup 2. Create copy of website (www.site.com/15) 3. Install new Joomla version (www.site.com/3) 4. Migrate website data (.com/15 -> .com/3) 5. Install Joomla 3 version of extensions 6. Adjust files, like templates & Joomla settings
  93. 93. 1. Backup 2. Create copy of website (www.site.com/15) 3. Install new Joomla version (www.site.com/3) 4. Migrate website data (.com/15 -> .com/3) 5. Install Joomla 3 version of extensions 6. Adjust files, like templates & Joomla settings 7. Test result of migration
  94. 94. 1. Backup 2. Create copy of website (www.site.com/15) 3. Install new Joomla version (www.site.com/3) 4. Migrate website data (.com/15 -> .com/3) 5. Install Joomla 3 version of extensions 6. Adjust files, like templates & Joomla settings 7. Test result of migration 8. Publish new website (.com -> .com/old & .com/3 -> .com)
  95. 95. Case: Complex Migration Request
  96. 96. Case: Complex Migration Request
  97. 97. Case: Complex Migration Request - Migration within max 1,5 day freeze, max 2 hours downtime during evening hours - Identical layout, functionality, URLs, menus, articles, etc. - In short: the visitor should not see or experience differences between Joomla 1.5 and Joomla 2.5 version
  98. 98. 1. Backup 2. Create copy of website (www.site.com/15) 3. Install new Joomla version (www.site.com/3) 4. Migrate website data (.com/15 -> .com/3) 5. Install Joomla 3 version of extensions 6. Adjust files, like templates & Joomla settings 7. Test result of migration 8. Publish new website (.com -> .com/old & .com/3 -> .com)
  99. 99. 1500 articles 650 menu-items 950 modules 20+ extensions
  100. 100. Setting Change Example Menu-Module ! !
  101. 101. Setting Change Example Menu-Module ! vs level Joomla 1.5 Joomla 2.5 0-3 1-4
  102. 102. Record Database Changes
  103. 103. Create Custom Script www.site.com/migrate.php
  104. 104. Change Modules with ID’s 223, 294 and 357
  105. 105. Change Modules with ID’s 223, 294 and 357 - “startLevel” of module with ID 233 is changed from 2 to 3. - “menutype” is added for module with ID 294 - “You are here” text is set to “hide” for the breadcrumbs module with ID 357.
  106. 106. www.site.com/migrate.php define('_JEXEC', 1);! ! // Connect with Joomla! define('JPATH_BASE', __DIR__);! require_once JPATH_BASE . '/includes/defines.php';! require_once JPATH_BASE . '/includes/framework.php';! ! // Database connection! $db = JFactory::getDBO();
  107. 107. /**! www.site.com/migrate.php * Module changes! */! ! // Get the modules that need changes! $query = $db->getQuery(true);! $query->select('*')! !->from('#__modules')! !->where('id IN (233,294,357)');! $db->setQuery($query);! $modules = $db->loadObjectList('id');! ! foreach($modules as $module)! {! !$module->params = json_decode($module->params);! }
  108. 108. www.site.com/migrate.php // Change startLevel! if ($modules[233]->params->startLevel == 2)! {! !$modules[233]->params->startLevel = 3;! !echo('<strong>Module [233]:</strong> startLevel: 3 <br/>');! }
  109. 109. www.site.com/migrate.php // Set menutype! if (empty($modules[294]->params->menutype))! {! !$modules[294]->params->menutype = 'mainmenu';! !echo('<strong>Module [294]:</strong> menutype: mainmenu <br/ >');! }
  110. 110. www.site.com/migrate.php // Hide breadcrumb "You are here"! if (!$modules[357]->params->showHere)! {! !$modules[357]->params->showHere = 0;! !echo('<strong>Module [357]:</strong> showHere: 0 <br/>');! }
  111. 111. www.site.com/migrate.php // Save new module params! foreach($modules as $id=>$module) ! {! !$params !!= json_encode($module->params);! !$mod !!!= new JObject();! !$mod->id !!= $id;! !$mod->params!= $params;! !! !$result = $db->updateObject('#__modules', $mod, 'id');! }
  112. 112. Correct component specific
  113. 113. Correct component specific - set Access to 1 for all items in ZOO
  114. 114. www.site.com/migrate.php /**! * Component changes! */! ! // ZOO access fixes! $query !!= $db->getQuery(true);! $fields != array('access=1');! $conditions = array('access=0');! $query->update($db->quoteName('#__zoo_item'))->set($fields)- >where($conditions);! $db->setQuery($query);! ! $result = $db->query();! echo('<strong>ZOO:</strong> Access set to 1 <br/>');
  115. 115. Custom Script Example https://gist.github.com/sanderpotjer/9311435
  116. 116. Clean Joomla 3 Base
  117. 117. Test
  118. 118. Adjust Custom Script
  119. 119. Test
  120. 120. Adjust Custom Script
  121. 121. Test
  122. 122. Adjust Custom Script
  123. 123. Migration Script (non code)
  124. 124. 10:30 - 11:00 hour Migration day kickoff meeting
  125. 125. 11:00 - 12:30 hour Exact.nl backup maken & compare: - Create Backup of Joomla 1.5 version - Install locally - Compare Backup with version used for preparations - Adjust Joomla 2.5 site if needed
  126. 126. 11:00 - 12:30 hour Joomla 1.5 site preparations: - Empty categories trash - Empty articles trash - Empty menu trash - General Check-In
  127. 127. 11:00 - 12:30 hour Joomla 2.5 site preparations: - Create new database with "clean" dataset (without exact.nl content data) - SP Upgrade configuration - Static server files sync between 1.5 site and 2.5 site - Publish Joomla 2.5 base version with static files on www.exact.nl/25/
  128. 128. Lunch
  129. 129. 13:00 - 16:00 hour Test migrations - Test migraties according "Migration Manual" - After test, restore as "Joomla 2.5 site preparation" status ! Check result of test migrations [Client] - Test migration result and report issues
  130. 130. 13:00 - 16:00 hour Roll-out fixes - In case of issues, improve migration script ! Prepare off-line page - Specific page visible during the migration downtime
  131. 131. 16:00 - 17:30 hour Final opportunity for content changes on live site - No content changes after 16:00 hour - Administration area restricted - Visitors can still use the full functionality of the website, form submissions won’t get lost
  132. 132. 16:00 - 17:30 hour Final test migration - Final test migraties according "Migration Manual" ! Final Joomla 2.5 site preparations: - Create new database with "clean" dataset - Static server files sync between 1.5 site and 2.5 site - Publish Joomla 2.5 base version with static files on
  133. 133. Pizza!
  134. 134. 19:00 - 19:15 hour Final checks - Check if Joomla 1.5 site is ready - Check if Joomla 2.5 site is ready - Check database tables - Check if required software & connections are ready - Check if hosting provider is ready
  135. 135. 19:15 - 19:30 hour Migrations www.exact.nl - Final migraties according "Migration Manual" - During this period www.exact.nl is offline, visitors can’t use the website
  136. 136. 19:30 - ? : ? hour Monitoring of www.exact.nl - Monitoring of migrated website - Apply small bug-fixes if needed - In case of bigger issues a revert of the Joomla 1.5 site according the "Emergency Revert Manual" - Old Joomla 1.5 version available for reference on www.exact.nl/15/
  137. 137. Celebrate!
  138. 138. Celebrate!
  139. 139. Migration Manual
  140. 140. 1) Set exact.nl (Joomla 1.5) site off-line (+/- 0,5 minute)
  141. 141. 2) Back-up Joomla 1.5 site (+/- 5 minutes)
  142. 142. 3) SP Upgrade migration (+/- 1 minute) Data migration via SP Upgrade extension - Users - Content - Newsfeed - Menus - Modules
  143. 143. 4) Manual tables export, conversion & import (+/- 3 minutes) jos_advancedmodules jos_exactlog jos_exacttracking jos_exacttracking_pages jos_jdownloads_* jos_rseventspro_* jos_rsfirewall_* (except config) jos_rsform_* jos_snippets jos_virtuemart_* (except config) jos_widgetkit_widget jos_zoo_*
  144. 144. 5) Manual operations in 2.5 site (+/- 2 minutes) - Install Advanced Module Manager - Install RSEventsPro - Install RSFormPro - Install RSFirewall - Run VirtueMart Tools -> Update tables - Run SP Upgrade - Run custom Exact conversion script
  145. 145. 5) Manual operations in 2.5 site (+/- 2 minutes) - Run Joomla Advanced Search (Finder) indexer - Fix Asset Issues with ACL Manager - Configure frontend/backend .htaccess files - Check memcache configuration - Publish obGrapper pipes - Clear cache
  146. 146. 6) Check result (+/- 2 minutes) Check migration result on www.exact.nl/25/
  147. 147. 7) Move Joomla 1.5 site (+/- 0,5 minute) Move www.exact.nl to www.exact.nl/15/
  148. 148. 8) Move Joomla 2.5 site (+/- 0,5 minute) Move www.exact.nl/25/ to www.exact.nl/
  149. 149. 9) Adjust configuration.php paths (+/- 0,5 minute) Adjust the /tmp/ and /log/ folder paths in www.exact.nl/configuration.php and www.exact.nl/15/configuration.php
  150. 150. 10) Set exact.nl (Joomla 2.5) site on-line (+/- 0,5 minute)
  151. 151. Emergency Revert Manual
  152. 152. 1) Set exact.nl (Joomla 2.5) site off-line (+/- 0,5 minute)
  153. 153. 2) Move Joomla 2.5 site (+/- 0,5 minute) Move www.exact.nl to www.exact.nl/25/
  154. 154. 3) Move Joomla 1.5 site (+/- 0,5 minute) Move www.exact.nl/15/ to www.exact.nl/
  155. 155. 4) Adjust configuration.php paths (+/- 0,5 minute) Adjust the /tmp/ and /log/ folder paths in www.exact.nl/configuration.php and www.exact.nl/25/configuration.php
  156. 156. 5) Set exact.nl (Joomla 1.5) site on-line (+/- 0,5 minute)
  157. 157. Case Results: Complex Migration Request ! freeze & downtime: 6 minutes
  158. 158. Case Results: Complex Migration Request ! freeze & downtime: 6 minutes preparation time: 2-3 weeks
  159. 159. Resources Article: “Complex Joomla! 1.5 Migration With Minimal Downtime” http://magazine.joomla.org/issues/issue-mar-2014/item/1794-complex-joomla-15-migration-with-minimal-downtime ! Custom Migration Script Example https://gist.github.com/sanderpotjer/9311435 ! Presentation slides http://sanderpotjer.nl

×