Ibexa DXP Discussions

Community discussion forum for developers working with Ibexa DXP

Upgrade from 2.1 to 2.5 Enterprise

Hi,

I am trying to upgrade step by step from 2.1 to 2.5 so I followed the official docs for this: https://doc.ezplatform.com/en/latest/updating/4_update_2.2/ but I got stuck at migrating the Landing pages. I want to mention that I also have some custom blocks included that looks like they need to be converted according to documentation.

In order to do this, I have installed the ezsystems/ezplatform-page-migration dependecy, included in AppKernet as it says, but when I run bin/console ezplatform:page:migrate, the script is running for about 8 seconds, then it stops by showing the following error:

In appDevDebugProjectContainer.php line 5926:

[Symfony\Component\Debug\Exception\ClassNotFoundException]
Attempted to load class “XmlConverter” from namespace “EzSystems\EzPlatformPageFieldType\FieldType\LandingPage”.
Did you forget a “use” statement for “EzSystems\LandingPageFieldTypeBundle\FieldType\LandingPage\XmlConverter”?

Ive seen in the next lines of the documentation that the custom blocks need to be converted into a different format and uses Listener for this, and Ive converted them like this, and also added the DefaultConverter class within the service.yml file at every custom block like this:

custom.block.slider:
class: EzSystems\EzPlatformPageMigration\Converter\AttributeConverter\DefaultConverter
tags:
- { name: ezplatform.fieldtype.ezlandingpage.migration.attribute.converter, block_type: sliderblock }

I`ve also tried to build a custom coverter class to use instead, but still the same error when running the composer migrate script

In the end, I was about to skip this landing pages migration, and just removed the entire bundle from AppKernet and rerun the composer migration script, but it failed again and I don’t know how to proceed forward so I can upgrade to 2.2 at least.

Any help is welcome. Thanks in advice

Hi,
It looks like you have two different namespaces “EzSystems\EzPlatformPageFieldType” and “EzSystems\LandingPageFieldTypeBundle”. It might be that you have a newer version of the field type bundle where this class doesn’t exist. I can confirm that this class was part of “EzSystems\LandingPageFieldTypeBundle”.

Check your composer and the bundle installed:

ezsystems/landing-page-fieldtype-bunde <- XmlConverter exists only here
ezsystems/ezplatform-page-fieldtype

Thanks for your implication @da_real

I think we’re closer now and it might be a conflict between these two blundles because when I pulled the git upstream, my composer.json and AppKernel.php got updated and maybe when I tried to merge the old records with the new one, I ended having both of them.

AppKernel.php

...
new EzSystems\LandingPageFieldTypeBundle\EzSystemsLandingPageFieldTypeBundle(),
new EzSystems\EzPlatformPageFieldTypeBundle\EzPlatformPageFieldTypeBundle(),
...

and in composer.json

...
"ezsystems/ezplatform-page-fieldtype": "~1.0.0",
"ezsystems/landing-page-fieldtype-bundle": "~2.1.0",
...

I just tried to swap the order or EzSystemsLandingPageFieldTypeBundle and EzPlatformPageFieldTypeBundle inside the AppKernel, so the EzSystemsLandingPageFieldTypeBundle is after EzPlatformPageFieldTypeBundle, but then I got this when runing console cache:clear:

In LayoutDefinitionRegistry.php line 25:

  Type error: Argument 1 passed to EzSystems\LandingPageFieldTypeBundle\Registry\LayoutDefinitionRegistry::addLayoutDefinition() must be an instance of EzSystems\LandingPageFieldTyp   
  eBundle\FieldType\LandingPage\Definition\LayoutDefinition, instance of EzSystems\EzPlatformPageFieldType\FieldType\LandingPage\Definition\LayoutDefinition given, called in \var\cache\dev\ContainerU783jz2\appDevDebugProjectContainer.php on line 11819 

So I`m not even sure if I should have them both or not, but definetly this order is not right since I cannot even run the cache:clear script.
What do you think ?