Upgrade Information
Following steps are necessary during updating to newer versions.
Upgrade to 4.2.0
- [Indexing] Added support for Elasticsearch in parallel to Opensearch via
pimcore/general-data-index-bundlebundle - [Indexing] Introduced new service tag
pimcore.portal_engine.search_client_aware. Services implementing this tag will be injected with the search client. This tag will replace deprecated tagpimcore.portal_engine.search_client_definition - [Trackers] Added factories to create statistics trackers based on the configured search technology (Elasticsearch or OpenSearch). Symfony container service ids for trackers changed to the corresponding interface:
Pimcore\Bundle\PortalEngineBundle\Service\StatisticsTracker\OpenSearch\AssetUpdateTracker->Pimcore\Bundle\PortalEngineBundle\Service\StatisticsTracker\AssetUpdateTrackerInterfacePimcore\Bundle\PortalEngineBundle\Service\StatisticsTracker\OpenSearch\DownloadTracker->Pimcore\Bundle\PortalEngineBundle\Service\StatisticsTracker\DownloadTrackerInterfacePimcore\Bundle\PortalEngineBundle\Service\StatisticsTracker\OpenSearch\PortalUserLoginTracker->Pimcore\Bundle\PortalEngineBundle\Service\StatisticsTracker\PortalUserLoginTrackerInterface- For legacy reasons, the old service ids are still available, but they are deprecated and will be removed in the next major version. Please note that these services work only with OpenSearch technology.
- [Permissions] Added the possibility to disable Public Share functionality of each Data Pool and on user/group level permission. Added
PublicShareEvent.
Upgrade to 4.0.0
- [Indexing] Removed Elasticsearch support and indexing mechanisms, Portal Engine is using OpenSearch now via
pimcore/general-data-index-bundlebundle - Removed usage of ongr-io/ElasticsearchDSL library and replaced it with custom solution
- This is especially important for custom implementations of
Pimcore\Bundle\PortalEngineBundle\Service\SearchIndex\Search\PreConditionServiceHandler\PreConditionServiceHandlerInterfaceand events manipulating the search queries.
- This is especially important for custom implementations of
- [Core] Removed Pimcore 10 support
- [Frontend] Updated frontend dependencies
- [Events] Moved events to
pimcore/general-data-index-bundlebundlePimcore\Bundle\PortalEngineBundle\Event\Asset\ExtractMappingEvent->Pimcore\Bundle\GenericDataIndexBundle\Event\Asset\ExtractMappingEventPimcore\Bundle\PortalEngineBundle\Event\Asset\UpdateIndexDataEvent->Pimcore\Bundle\GenericDataIndexBundle\Event\Asset\UpdateIndexDataEventPimcore\Bundle\PortalEngineBundle\Event\DataObject\UpdateIndexDataEvent->Pimcore\Bundle\GenericDataIndexBundle\DataObject\Asset\UpdateIndexDataEventPimcore\Bundle\PortalEngineBundle\Event\DataObject\UpdateIndexDataEvent->Pimcore\Bundle\GenericDataIndexBundle\Event\DataObject\UpdateIndexDataEvent
- [Configuration] Moved configuration options
pimcore_portal_engine.index_service.es_client_paramsandpimcore_portal_engine.index_service.es_client_params.es_client_nametopimcore_portal_engine.index_service.opensearch_client_paramsandpimcore_portal_engine.index_service.opensearch_client_params.client_name - [Configuration] Removed configuration option
pimcore_portal_engine.pimcore_portal_engine.core_fields_configuration(is now handled bypimcore_generic_data_index.core_fields_configurationofpimcore/general-data-index-bundlebundle) - [Configuration] Removed configuration options
pimcore_portal_engine.messenger_queue_processing.*. The queue processing is now handled bypimcore/general-data-index-bundlebundle and handling it by message workers is now the only/default option. - [Configuration] Removed
pimcore_portal_engine.index_service.index_settings configurationoption. The index settings are now handled bypimcore/general-data-index-bundlebundle. - [Configuration] Container parameter
portal-engine.elasticsearch.index-prefixwas removed and replaced withgeneric-data-index.index-prefixofpimcore/general-data-index-bundlebundle. - [Configuration] Container parameter
portal-engine.elasticsearch.es-client-namewas removed. Use thegeneric-data-index.opensearch-clientservice to get the right client if needed. - [Code BC breaks] Migrated asset and data object field definition adapters to new requirements
- Renamed getESMapping() method to getIndexMapping()
- Renamed method getLocalizedESMapping() to getLocalizedIndexMapping()
- Add return types to most of the methods
- [Code BC breaks] Removed
Pimcore\Bundle\PortalEngineBundle\Enum\ElasticSearchFieldsenum and replaced it withPimcore\Bundle\GenericDataIndexBundle\Enum\SearchIndex\FieldCategoryandPimcore\Bundle\GenericDataIndexBundle\Enum\SearchIndex\FieldCategory\SystemFieldenums ofpimcore/general-data-index-bundlebundle. - [Code BC breaks] Moved statistic trackers from
Pimcore\Bundle\PortalEngineBundle\Service\StatisticsTracker\ElasticsearchtoPimcore\Bundle\PortalEngineBundle\Service\StatisticsTracker\OpenSearchand migrated them to OpenSearch instead of Elasticsearch. - [Code BC breaks] Make use of PHP 8 constructor property promotion feature for most of the classes.
- Private and protected properties used in the constructor are now typed.
- [Code BC breaks] Renamed property
userLoginFieldsof classPimcore\Bundle\PortalEngineBundle\Service\Security\Authentication\UserProvidertofields - [Search index structure] Moved field paths of
standard_fieldswithin the search index to new convention/location:- Asset metadata are now stored in
custom_fields - Data object relation fields are now stored in custom_fields
- Localized fields are now stored with
{LOCALE}placeholder instead of hardcoded language locale. .rawsubfields are renamed to '.keyword'Pimcore\Bundle\PortalEngineBundle\Migrations\Pimcore11\Version20240208161554migration should take care of updating the index fields automatically, but the data pool configuration pool documents should be double checked to ensure that filter fields, list view fields, sortable fields and the list view name attributes are still correct.- Custom conditions via
Pimcore\Bundle\PortalEngineBundle\Service\SearchIndex\Search\PreConditionServiceHandler\PreConditionServiceHandlerInterfaceshould be checked and updated if necessary.
- Asset metadata are now stored in
Upgrade to 3.1.0
- (only relevant if not already upgraded to version 2.6.0) [Indexing] - Filters based on the asset metadata with relations to objects which have localized fields are now indexed with all the localized values. The index structure is therefore changed (from single string to array) and it is necessary to run the migration that recreates all the indexes after updating to 3.1.0.
Upgrade to 3.0.0
- BEFORE UPGRADE: First upgrade to last 2.5 version and make sure all migrations are executed properly.
- BEFORE UPGRADE: Upgrade directly to 3.1.0 if you already upgraded to 2.6 versions.
- BEFORE UPGRADE: Activate
Generate Type DeclarationsforPortalUserandPortalUserGroupclasses and save them to regenerate the php class files. This will break portals until portal engine is upgraded to v3.0.0 via composer. - Removed Pimcore 6.9 support.
- If you are upgrading to pimcore 11, then please install the
pimcore/admin-ui-classic-bundlebundle. - [Security] Removed support of old authentication system (not setting
security.enable_authenticator_manager: trueinsecurity.yaml) and related Guard authenticators. - [OpenId Connect] Bumped required version of
openid-connectbundle to ^1.1. - [Elasticsearch] Removed ES 6 and ES 7 support, added ES 8 support.
- [Elasticsearch] Changed elasticsearch client configuration.
- Adapted installation process, see docs for details.
- Added additional parameter for the
DataPoolConfigInterfacein methods ofWorkspaceServiceInterface,SearchServiceInterface,FolderServiceandPreConditionService. - [Indexing] Added option to re-create index or update index via settings page
- [DataObject][Layout] - fixed layout of Field Container (vbox is now vertical and hbox horizontal layout)
- [Security] Changed the return type of
Pimcore\Bundle\PortalEngineBundle\Service\Security\DirectEditPermissionService::getUserIdtonull|int. - [Translations] Introduced separate translation domain for frontend translations -
portal-engine-frontend. - [Translations] Implemented PO Editor workflow for shared and admin translations (they are now under
src\Resources\translationsin.yamlformat). - [Migrate Statistics Explorer Data] If the statistics data (for logins, downloads and asset updates) stored in Elasticsearch are still relevant and should be kept, the data needs be migrated to OpenSearch. This can be done for example via native reindexing directly in OpenSearch:
POST _reindex
{
"source":{
"index": "enterprise_portal_statistics_download__2024_04",
"remote":{
"host":"http://elastic:9200",
"username":"elastic",
"password":"somethingsecret"
}
},
"dest":{
"index":"pimcore_statistics_download__2024_04"
}
}
To make this possible it is needed to set the reindex.remote.whitelist setting in the opensearch.yml configuration file of the OpenSearch instance to allow the remote reindexing from the old Elasticsearch instance. Additionally, the correct index names/prefixes need to be checked to find the right source and target index names.
Upgrade to 2.6.0
- [Indexing] - Filters based on the asset metadata with relations to objects which have localized fields are now indexed with all the localized values. The index structure is therefore changed (from single string to array) and it is necessary to run the migration that recreates all the indexes after updating to 2.6.0.
Upgrade to 2.3
- From now on, out of the box Statistics Explorer data sources and trackers use same ES configuration as portal engine itself.
If you want to change that, you need to overwrite service definition of
pimcore.portal_engine.statistics_explorer.client_factory
Upgrade to 2.1.0
- Execute all migrations of the bundle.
Upgrade to 2.0.0
- First upgrade to last 1.x version and make sure all migrations are executed properly.
- Migrate Pimcore to Pimcore 6.9
- Migrate controller references to new naming scheme (e.g. ), for example by using migration command
bin/console migration:controller-reference - Add following line to your firewalls configuration in the
security.ymlof your app after thepimcore_adminfirewall.
security:
firewalls:
pimcore_admin:
# ...
portal_engine: '%pimcore_portal_engine.firewall_settings%'
- Clear Pimcore Caches (
bin/console pimcore:cache:clear) - Elasticsearch mapping has changed to fix deprecations. Rebuild your index by running following commands:
bin/console portal-engine:update:index-recreate
bin/console portal-engine:update:process-index-queue