Migrat­ing a web­site with plu­g­ins from Craft 2 to Craft 3

In this hangout, we'll start with a walk through upgrading a simple Craft 2 site to Craft 3. We'll explore how the upgrade process works with plugins that exist in and don't exist yet on Craft 3 and deepen our understanding of how Craft behaves during the upgrade process so we can plan successful migrations.

For plugin developers, we'll continue the discussion on how to plan for and test migrations during the upgrade process, including the new Install migration and how to make sure your plugins are ready for PostgreSQL.

  • 00:30 What resources are available to help upgrade from Craft 2 to Craft 3?
  • 04:00 What do we need to do before we start upgrading?
  • 05:08 How to add recommendations to the Craft 2 updates page about Craft 3 plugins
  • 08:18 Plugins can now set a minVersionRequired property to set a break point
  • 12:15 How to upgrade to Craft 3 and keep the same folder structure
  • 21:11 How to upgrade to Craft 3 and use the new folder structure (false start)
  • 24:02 How to upgrade to Craft 3 and use the new folder structure (take 2)
  • 26:08 A first look at the .env file
  • 26:57 Why did Craft 3 change to start using PHP dotenv?
  • 36:18 Should you update your Craft 2 sites to use PHP dotenv?
  • 38:36 What steps does Craft take to make sure environment variables aren't visible in the Control Panel
  • 39:22 Continuing with the upgrade to Craft 3 using the new folder structure
  • 41:02 How does Craft behave if you leave deprecated environmentVariables in your config?
  • 45:42 Upgrade Error: Why would Craft prompt you to install Craft 3 even though your database already exists? Craft no longer prefixes tables with craft_ by default.
  • 48:26 Upgrade Error: Couldn't backup the database. Craft has changed the way it handles backups and no longer provides a PHP-based way to backup the database by default.
  • 55:22 Upgrade Error: It looks like someone is currently performing a system update. Craft now attempts to let you know when another user might be updating the database.
  • 58:15 Login Error: Template not found: install
  • 59:05 What changed in the folder structure after the upgrade to Craft 3?
  • 1:01:12 Upgrade Error: Unable to find component class 'craft\fields\RichText' - What changed with Redactor in Craft 3?
  • 1:05:00 What has changed with how user photos are stored in Craft 3? Aliases and how to update and manage your User Photos with a volume.
  • 1:09:42 What has changed in the database for Craft 3?
  • 1:10:40 How is Craft managing Craft assets and resource paths in Craft 3?
  • 1:15:43 Discussion of how plugins are managed in the database by Craft
  • 1:16:24 What happens to plugins when we upgrade to Craft 3?
  • 1:17:58 Updating our plugins and getting them installed - installing the new Redactor plugin and running migrations for existing Rich Text Fields
  • 1:22:44 Updating Sprout Fields and running migrations
  • 1:24:41 What are your options when you want to upgrade but the plugin doesn't exist yet on Craft 3?
  • 1:26:50 What has changed with what you may want to exclude in the .gitignore?
  • 1:27:50 What steps does a plugin need to take to plan a migration to Craft 3?
  • 1:31:43 A discussion about Install migrations and standard migrations
  • 1:35:54 What is the best way for developers to test plugin migrations?
  • 1:42:00 Craft now supports PostgreSQL, plugins need to as well
  • 1:44:11 What do plugin developers need to do to ensure their plugins worth with PostgreSQL?
  • 1:53:43 Is it possible to update Craft 2 using MySQL to Craft 3 using PostgreSQL?
  • 1:55:50 Outro

Level up in Craft CMS with practical examples, snippets, and patterns.
Craft The Planet emails are sent out several times a week.