Skip to content

Update from v4.0.x to v4.1

This update procedure applies if you are using v4.0.latest.

Go through the following steps to update to v4.1.

Update the app to v4.1

First, run the following command:

1
composer require ibexa/content:4.1.5 --with-all-dependencies --no-scripts
1
composer require ibexa/experience:4.1.5 --with-all-dependencies --no-scripts
1
composer require ibexa/commerce:4.1.5 --with-all-dependencies --no-scripts

Update Flex server

The flex.ibexa.co Flex server has been disabled. If you are using earlier v4.x versions, and you have not done it before, you have to update your Flex server.

To do it, in your composer.json check whether the https://flex.ibexa.co endpoint is still listed in extra.symfony.endpoint. If so, replace it with the new https://api.github.com/repos/ibexa/recipes/contents/index.json?ref=flex/main endpoint.

You can do it manually, or by running the following command:

1
composer config extra.symfony.endpoint "https://api.github.com/repos/ibexa/recipes/contents/index.json?ref=flex/main"

Continue with updating the app

Run the following command:

1
composer recipes:install ibexa/content --force -v
1
composer recipes:install ibexa/experience --force -v
1
composer recipes:install ibexa/commerce --force -v

The recipes:install command installs new YAML configuration files. Look through the old YAML files and move your custom configuration to the relevant new files.

Update the database

Caution

Always back up your data before running any database update scripts.

After updating the database, clear the cache.

Do not use --force argument for mysql / psql commands when performing update queries. If there is any problem during the update, it is best if the query fails immediately, so you can fix the underlying problem before you execute the update again. If you leave this for later you risk ending up with an incompatible database, though the problems might not surface immediately.

Apply the following database update scripts:

Ibexa DXP

1
2
mysql -u <username> -p <password> <database_name> < vendor/ibexa/installer/upgrade/db/mysql/ibexa-4.0.0-to-4.1.0.sql>
mysql -u <username> -p <password> <database_name> < vendor/ibexa/installer/upgrade/db/mysql/ibexa-4.1.0-to-4.1.1.sql
1
2
psql <database_name> < vendor/ibexa/installer/upgrade/db/postgresql/ibexa-4.0.0-to-4.1.0.sql
psql <database_name> < vendor/ibexa/installer/upgrade/db/postgresql/ibexa-4.1.0-to-4.1.1.sql

Configure the product catalog

Caution

Always back up your data before you perform any actions on the product catalog.

Regardless of whether your application already uses the product catalog or you want to start using this functionality, you can choose to use the old features, present in v4.0.x, or upgrade to the all new product catalog that v4.1.x brings.

To use the legacy solution, in the config/packages folder, in YAML files with shop configuration, under the parameters key, make sure that the ibexa.commerce.site_access.config.eshop.default.catalog_data_provider parameter is set to ez5.

To use the new product catalog, since the new solution does not support the old price engine out of the box, in your price engine configuration, you must update the following parameters by providing the Ibexa\\ProductCatalog\\Bridge\\PriceProvider value in the ibexa_setting table, commerce group, config identifier:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
ibexa.commerce.site_access.config.price.default.price_service_chain.basket
ibexa.commerce.site_access.config.price.default.price_service_chain.wish_list
ibexa.commerce.site_access.config.price.default.price_service_chain.comparison
ibexa.commerce.site_access.config.price.default.price_service_chain.wish_list
ibexa.commerce.site_access.config.price.default.price_service_chain.comparison
ibexa.commerce.site_access.config.price.default.price_service_chain.quick_order
ibexa.commerce.site_access.config.price.default.price_service_chain.search_list
ibexa.commerce.site_access.config.price.default.price_service_chain.product_list
ibexa.commerce.site_access.config.price.default.price_service_chain.stored_basket
ibexa.commerce.site_access.config.price.default.price_service_chain.basket_variant
ibexa.commerce.site_access.config.price.default.price_service_chain.product_detail
ibexa.commerce.site_access.config.price.default.price_service_chain.bestseller_list
ibexa.commerce.site_access.config.price.default.price_service_chain.slider_product_list
ibexa.commerce.site_access.config.price.default.price_service_chain.quick_order_line_preview

You can do it by using the UPDATE ibexa_setting command.

Example of price engine configuration
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
UPDATE ibexa_setting SET value = 
'{"ibexa.commerce.site_access.config.basket.default.validHours": 120, 
"ibexa.commerce.site_access.config.core.default.category_view": "product_list", 
"ibexa.commerce.site_access.config.core.default.currency_list": {"CAD": "1.55686", "EUR": "1", "GBP": "0.86466", "USD": "1.23625"}, 
"ibexa.commerce.site_access.config.basket.default.stock_in_column": true, 
"ibexa.commerce.site_access.config.core.default.shipping_vat_code": "19", 
"ibexa.commerce.site_access.config.basket.default.description_limit": 50, 
"ibexa.commerce.site_access.config.core.default.bestseller_threshold": 1, 
"ibexa.commerce.site_access.config.checkout.de.payment_method.invoice": true, 
"ibexa.commerce.site_access.config.checkout.en.payment_method.invoice": true, 
"ibexa.commerce.site_access.config.eshop.default.erp.variant_handling": "SKU_ONLY", 
"ibexa.commerce.site_access.config.wishlist.default.description_limit": 50, 
"ibexa.commerce.site_access.config.eshop.default.webconnector.password": "passwo", 
"ibexa.commerce.site_access.config.eshop.default.webconnector.username": "admin", 
"ibexa.commerce.site_access.config.checkout.de.shipping_method.standard": true, 
"ibexa.commerce.site_access.config.checkout.en.shipping_method.standard": true, 
"ibexa.commerce.site_access.config.core.default.marketing.olark_chat.id": "6295-386-10-7457", "ibexa.commerce.site_access.config.newsletter.default.newsletter_active": false, 
"ibexa.commerce.site_access.config.basket.default.recalculatePricesAfter": "3 hours", 
"ibexa.commerce.site_access.config.basket.stored.default.stock_in_column": true, 
"ibexa.commerce.site_access.config.core.default.currency_rate_changed_at": "01.01.2018", 
"ibexa.commerce.site_access.config.core.default.template_debitor_country": "DE", 
"ibexa.commerce.site_access.config.eshop.default.webconnector.erpTimeout": 5, 
"ibexa.commerce.site_access.config.eshop.default.webconnector.soapTimeout": 5, 
"ibexa.commerce.site_access.config.basket.stored.default.description_limit": 50, 
"ibexa.commerce.site_access.config.checkout.default.payment_method.invoice": true, 
"ibexa.commerce.site_access.config.eshop.default.catalog_description_limit": 50, 
"ibexa.commerce.site_access.config.newsletter.default.unsubscribe_globally": true, 
"ibexa.commerce.site_access.config.price.default.price_service_chain.basket":     ["Ibexa\\\\ProductCatalog\\\\Bridge\\\\PriceProvider"], 
"ibexa.commerce.site_access.config.basket.default.refreshCatalogElementAfter": "1 hours", 
"ibexa.commerce.site_access.config.checkout.default.shipping_method.standard": true, 
"ibexa.commerce.site_access.config.core.default.enable_customer_number_login": false, 
"ibexa.commerce.site_access.config.newsletter.default.newsletter2go_auth_key": "", 
"ibexa.commerce.site_access.config.newsletter.default.newsletter2go_password": "", 
"ibexa.commerce.site_access.config.newsletter.default.newsletter2go_username": "", 
"ibexa.commerce.site_access.config.core.default.automatic_currency_conversion": true, 
"ibexa.commerce.site_access.config.erp.default.web_connector.service_location": "http://webconnproxy.silver-eshop.de?config=harmony_wc3_noop_mapping", 
"ibexa.commerce.site_access.config.core.default.marketing.olark_chat.activated": false, 
"ibexa.commerce.site_access.config.price.default.price_service_chain.wish_list": ["Ibexa\\\\ProductCatalog\\\\Bridge\\\\PriceProvider"], 
"ibexa.commerce.site_access.config.checkout.de.shipping_method.express_delivery": true, 
"ibexa.commerce.site_access.config.checkout.en.shipping_method.express_delivery": true, 
"ibexa.commerce.site_access.config.order.management.local.default.shipping_cost": "", 
"ibexa.commerce.site_access.config.order.management.local.default.shipping_free": "", 
"ibexa.commerce.site_access.config.price.default.price_service_chain.comparison": ["Ibexa\\\\ProductCatalog\\\\Bridge\\\\PriceProvider"], 
"ibexa.commerce.site_access.config.core.default.bestseller_limit_on_catalog_page": 6, 
"ibexa.commerce.site_access.config.price.default.price_service_chain.quick_order": ["Ibexa\\\\ProductCatalog\\\\Bridge\\\\PriceProvider"], 
"ibexa.commerce.site_access.config.price.default.price_service_chain.search_list": ["Ibexa\\\\ProductCatalog\\\\Bridge\\\\PriceProvider"], 
"ibexa.commerce.site_access.config.basket.default.additional_text_for_basket_line": false, 
"ibexa.commerce.site_access.config.core.default.bestseller_limit_in_silver_module": 6, 
"ibexa.commerce.site_access.config.price.default.price_service_chain.product_list": ["Ibexa\\\\ProductCatalog\\\\Bridge\\\\PriceProvider"], 
"ibexa.commerce.site_access.config.price.default.price_service_chain.stored_basket": ["Ibexa\\\\ProductCatalog\\\\Bridge\\\\PriceProvider"], 
"ibexa.commerce.site_access.config.core.de.standard_price_factory.fallback_currency": "EUR", 
"ibexa.commerce.site_access.config.core.default.bestseller_limit_on_bestseller_page": 6, 
"ibexa.commerce.site_access.config.core.default.use_template_debitor_contact_number": false, 
"ibexa.commerce.site_access.config.core.en.standard_price_factory.fallback_currency": "EUR", 
"ibexa.commerce.site_access.config.price.default.price_service_chain.basket_variant": ["Ibexa\\\\ProductCatalog\\\\Bridge\\\\PriceProvider"], 
"ibexa.commerce.site_access.config.price.default.price_service_chain.product_detail": ["Ibexa\\\\ProductCatalog\\\\Bridge\\\\PriceProvider"], 
"ibexa.commerce.site_access.config.checkout.default.shipping_method.express_delivery": false, 
"ibexa.commerce.site_access.config.core.default.standard_price_factory.base_currency": "EUR", 
"ibexa.commerce.site_access.config.core.default.use_template_debitor_customer_number": true, 
"ibexa.commerce.site_access.config.price.default.price_service_chain.bestseller_list": ["Ibexa\\\\ProductCatalog\\\\Bridge\\\\PriceProvider"], 
"ibexa.commerce.site_access.config.checkout.de.payment_method.paypal_express_checkout": true, 
"ibexa.commerce.site_access.config.checkout.en.payment_method.paypal_express_checkout": true, 
"ibexa.commerce.site_access.config.core.default.price_requests_without_customer_number": true, 
"ibexa.commerce.site_access.config.eshop.default.last_viewed_products_in_session_limit": 10, 
"ibexa.commerce.site_access.config.basket.default.discontinued_products_listener_active": true, 
"ibexa.commerce.site_access.config.core.default.standard_price_factory.fallback_currency": "EUR", 
"ibexa.commerce.site_access.config.price.default.price_service_chain.slider_product_list": ["Ibexa\\\\ProductCatalog\\\\Bridge\\\\PriceProvider"], 
"ibexa.commerce.site_access.config.checkout.default.order_confirmation.sales_email_address": "", 
"ibexa.commerce.site_access.config.checkout.default.payment_method.paypal_express_checkout": true, 
"ibexa.commerce.site_access.config.basket.default.additional_text_for_basket_line_input_limit": 30, 
"ibexa.commerce.site_access.config.price.default.price_service_chain.quick_order_line_preview": ["Ibexa\\\\ProductCatalog\\\\Bridge\\\\PriceProvider"], 
"ibexa.commerce.site_access.config.newsletter.default.display_newsletter_box_for_logged_in_users": true, 
"ibexa.commerce.site_access.config.basket.default.discontinued_products_listener_consider_packaging_unit": true}' WHERE `group` = 'commerce' AND identifier = 'config';

After you update the settings, you can proceed to working with your products.

Finish update

Finish the update process:

1
composer run post-install-cmd

Finally, generate the new GraphQL schema:

1
php bin/console ibexa:graphql:generate-schema

YAML files with the schema are located in config/graphql/types/ibexa.