Case Study: Upgrading Joomla 1.5x/VirtueMart 1 to Joomla 3x/J2Store
The first Joomla website I ever built was DesignerPhotoCards.com.au, back in 2006. It was done using Joomla 1.0 and Virtuemart 1.0. This site is the reason I use Joomla today. At the time, I only knew how to handcode HTML, which I'd learned back in the dark ages before CSS even existed.
I wanted to be able to sell custom designs online. I'm not sure it was even called "ecommerce" back then. I knew I needed more than HTML/CSS but wasn't sure how to achieve that.
Then I read about this new thing called a Content Management System (CMS), which included a database and enabled far greater functionality. I set up WAMP and did some testing of different offerings, and the only one I could adapt to do what I needed, which seemed to have ongoing development, was Joomla.
Specifically what I needed was an ecommerce platform which allowed customers to upload a photo. I can't find the instructions online any more, but it involved some "custom modifications" of Virtuemart and it worked nicely. (In reality, "custom modifications" meant hacking core files because overrides weren't a big focus in the early days of Joomla - definitely not how we would do things today!).
In 2008 the site was updated to Joomla 1.5, but then I also started a new business called KidzBrandz (also ecommerce), and then WebSolutionZ took off, and I had young kids, so the site remained in limbo. One day Virtuemart got compromised so it was tidied up, the ecommerce functionality was disabled, and it sat there as not much more than a landing page. The problem was that Joomla 2.5 was basically a code rewrite, and I didn't have the time to re-do all my "custom modifications"!
In January this year, I finally decided it was time to resurrect the site, if only to get back into ecommerce sites (which I'd consciously avoided for several years due to the unrealistic support expectations of a former client, and having young kids).
But instead of VirtueMart, I wanted to use J2Store (because I am a masochist like to try new things). And I wanted to keep all the existing customer, product and order data. It was fairly complicated so I documented the steps in case I ever need to do it again. I should say up front - this process was not for the fainthearted!
- Joomla: J!1.5.26
- Virtuemart: v1.1.9
- Akeeba Backup v3.4.6
- PHP: 5.3
Set up a dev environment:
- Backup the live J1.5x site.
- Restore to a dev account. (I tried to restore to my local server, but immediately ran into problems around PHP versions, memory issues, etc., so instead I set up a temporary account in a reseller account with cPanel which allowed me to fairly easily set the PHP to 5.3 and subsequently restore the backup).
Tidy up J1.5x site:
- Unpublish/remove all 3rd party components/modules/plugins (except Virtuemart).
- Change to a default template (Milky Way).
Upgrade J1.5x to J2.5x:
- Install jUpgrade v2.5.2. This will create a new directory in the public_html structure called jupgrade.
- Log in. When you log into J2.5x, you're logging into public_html/jupgrade/administrator. The original J1.5x is still accessible via public_html/administrator.
- Upgrade Joomla 2.5x to the latest version J2.5.26.
- Upgrade Akeeba Backup to v4.7.7.
Migrate Virtuemart v1 to Virtuemart v2:
Luckily people have already done this before me so I was able to follow these instructions on the Virtuemart forum.
- Rename the following folders, so that the installer has a clean slate to work with:
- Move shop images folder from folders within the main VM component from [siteroot]/components/com_virtuemart to [siteroot]/images/stories/virtuemart/ (you have to create the destination virtuemart sub-folder yourself).
- Disable Joomla Debug option in Joomla Global Configuration, if enabled.
- Uninstall all old VirtueMart extensions (components and modules).
- Download latest VM (2.0.6 on the date of my migration) and extract files from zip file to separate folder.
- In Joomla Extension Manager, upload and install file com_virtuemart.2.0.6.tar.gz.
- Repeat above step for file com_virtuemart.2.0.6_ext_aio.tar.gz.
- Upon successful installation, go to the VirtueMart administrative area and choose the VirtueMart "Configuration" section under the "Shop" accordion control on the left side of the admin menu. Check the box for "Enable database Update tools".
- Go to Tools accordion, then click Tools & Migration, then "Migration" Tab. Choose "Everything" and click "Start Migration".
- Cross your fingers! After the migration, before doing anything else, make sure the default Joomla administrative user is identified as a vendor (no other shop configuration will be possible until you do this).
- Go to the Shop accordion and click on "Shop". Some shop info from the old VM version will be filled in, but you must choose the default currency and fill in all required fields on the "Additional Information" tab. "Additional Information" is relative to the admin account you set as the "Vendor" in the previous step.
- Click Save.
- If all went well, you should now be able to browse the live site and VirtueMart shop.
- Delete backup copies of the old VM component folders from before the migration.
- Joomla: J!2.5.28
- Virtuemart: v2.0.26
- Akeeba Backup v4.7.7
- PHP: 5.3
Migrate J2x to J3x:
- Set the default template to Beez2.
- Tidy up dev account.
- Blow away existing 1.5/Jupgrade environment.
- Restore most recent Backup to dev.
- Change PHP to 5.6.
- Migrate J2x to J3x (using these instructions).
- Update J2.5.28 to J3.5.1.
- Update J3.5.1 to J3.6.5.
- Change template to Protostar.
- Update J3.6.5 to J3.9.2 (latest).
Install Virtuemart v3:
This will convert all data from Virtuemart 2 into Virtuemart 3.
- Follow these instructions on the Virtuemart website.
- Remove old #__vm_ tables from database.
- Change PHP to 7.2.
- Joomla: J!3.9.2
- Virtuemart: v3
- Akeeba Backup v6x
- PHP: 7.2
Initially I started with the free version of J2Store, but eventually upgraded to Pro because I needed the "file upload" functionality, and wanted to include Paypal as a payment processor.
Migrate VM2 to J2Store:
- Install the free Virtuemart Migration tool.
- Go to J2Store / Apps and enable Virtuemart 2 J2Store Migration app.
- Open to set configuration. The documentation on the J2Store website is quite good.
- Install J2Store Simple CSV Import/Export (free). I did an export and tidied up the image location paths which had been duplicated from images/stories to images/j2store, and fixed up some of the pricing and descriptions.
- Set up a new Joomla website and exported/imported the J2Store database tables (for a clean site).
- Install new website template and configure.
- Configure site as per normal.
- Ran a spider over the existing J1.5 site to collect all the URLs, then remapped using Joomla Redirects.
- Joomla: J!3.9.4
- J2Store: v3.3.7
- Akeeba Backup v6x
- PHP: 7.2
Got questions? Please don't hesitate to comment below or contact us.