Skip to main content Skip to page footer

Migrating Typo3 from 10 to 11

Upfront: I took the hard way, and I am not completely satisfied. And, I am not using Composer.

At first, I made a clean (scratch) install of Typo3 11. I checked all the extensions I am using in my productive system and added them to the scratch V11 , too. Fortunately I had no extension in use that was not V11 compatible. As some extensions are delivered in different versions for v10 and v11, you will best temporaryly inactivate those extensions.

At first, as is always recommended, I made a backup of the database. Then I switched to PHP 8.1 on my web account. V11 will not run with PHP < 7.4.

I used the export function of phpMyAdmin to extract database structure form both the clean install and my Typo3 10 homepage. There are a few differences in table structure that have to be fixed. Most prominent: The log file structure has changed, you have to add a field called ‘channel’ and you have to change the data type of level from integer to varchar.. I used phpMyAdmin to apply the changes.

alter table sys_log add `channel` varchar(20) NOT NULL DEFAULT 'default';
alter table sys_log drop level;
alter table sys_log add `level` varchar(20);

Further changes have to be done to enable multi factor authentication. You eventually have to drop the column mfa_providers from the table be_users and add some fields, if this will not happen by some of the actions described below.

Table Column definition to add
be_groups `mfa_providers` text DEFAULT NULL
be_users `mfa` mediumblob DEFAULT NULL
fe_users `mfa` mediumblob DEFAULT NULL

Then I installed V11 as I had manually installed updates to V10: Download, unzip, change symlinks, go.

Afterwards I replaced my V10 .htaccess file with the .htaccess file from my clean V11 installation, applying to it all the additions I had made to the V10 file, and I deleted the typo3temp directory. Now was the time to login–with fingers crossed–and to use most of the widgets in the ‘Upgrade’ section. Also I executed ‘Analyze Datase Structure’, ‘Rebuild PHP Autoload Information’ and ‘Manage Language Packs’ in the ‘Maintenance’ section.

Fortunately, Typo3 V11 was usable. Not so fortunate: All the internal links were gone. While site structure was intact, embedded pictures were still in place and all external links were kept, I had to recreate links to every single file and all the crosslinks to other pages. It was propably my fault, as I had missed to do DB Check/Update Refernce Index before migrating.

Lucky me, my homepage is not that large. So I hopefully will be up to date for the next year.