Upgrade Ibexa DXP from 3.2.4 to 3.3.1

Before Read: If you run into more issues don’t hesitate to contact me or just ping me in the ezcommunity.slack.com :

During the upgrade from Ibexa DXP 3.2.4 to 3.3.1 (Release date: January 18, 2021) you might meet some troubles regarding the Database upgrades. Basically, the Ibexa 3.3 Upgrade Documentation regarding the git part should almost work. Starting from “Upgrade the database” section you can encounter into below list of issues. This is caused by the migration script which is executed by running below console command:

ℹ️ By the way, this command is executed from the new Ibexa Installer bundle introduced in this release and located in ibexa/installer vendor folder.

ℹ️ This command is located in the Command folder like any Symfony Command

In Ibexa Experience DXP 3.3.1 there are some commerce features available despite of they are part of Ibexa Commerce. Basically, you can make use of some functions like search autosuggestion or Product Catalog and some of the new ContentTypes introduced in this release.

Ibexa DXP 3.2.4 to 3.3.1 Upgrade Issues

The ibexa:upgrade command triggers behind the scene below method:

So, if you take a look to the injected CommerceProvisioner service you will find out that the provision() method is executing below migration file:

and this is where you will end up with the most migration issues

💡: By the way, you will learn some DB debugging 😉

1. Outdated entries in ezcontentclass_attribute_ml Table

The console error will be something similar to:

It happens because some invalid contentclass_attribute_id are available although they don’t exist in the ezcontentclass_attribute table.

So, in my case the last entry in ezcontentclass_attribute is 199 and I don’t have the id 200 in this table although it exists in ezcontentclass_attribute_ml. I find out later that there are more than 5 invalid contentclass_attribute_id in this table.

Basically, a contenttype was deleted but some information still persist in ezcontentclass_attribute_ml, which might be caused by a bug somewhere in the API.

✅ To fix it, you have to delete those invalid rows from the ezcontentclass_attribute_ml table.
ℹ️ And yes as usual you have to backup your DB first.

2. Article ContentType update issue

This issue is caused if you are using the default article ContentType delivered with the default Ibexa installation otherwise the script will break because your installation doesn’t contain this ContentType on update.

In my use case, The migration script will fail because the image FieldType in place is using ezimage and the migration script is trying to convert this field to ezobjectrelation. So, the error you get will be similar to:

Basically, if the script fails at this step you won’t be able to fix it. BUT..

I will recommend to copy the 201804161300_content_types.yml script somewhere in your installation and remove the ezimage update field and execute the script again using:

Now everything should work as expected but if you run into more issues don’t hesitate to contact me or just ping me in ezcommunity.slack.com:

I’ll do my best to help you 🙂