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-bundle
bundle - [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\AssetUpdateTrackerInterface
Pimcore\Bundle\PortalEngineBundle\Service\StatisticsTracker\OpenSearch\DownloadTracker
->Pimcore\Bundle\PortalEngineBundle\Service\StatisticsTracker\DownloadTrackerInterface
Pimcore\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-bundle
bundle - 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\PreConditionServiceHandlerInterface
and 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-bundle
bundlePimcore\Bundle\PortalEngineBundle\Event\Asset\ExtractMappingEvent
->Pimcore\Bundle\GenericDataIndexBundle\Event\Asset\ExtractMappingEvent
Pimcore\Bundle\PortalEngineBundle\Event\Asset\UpdateIndexDataEvent
->Pimcore\Bundle\GenericDataIndexBundle\Event\Asset\UpdateIndexDataEvent
Pimcore\Bundle\PortalEngineBundle\Event\DataObject\UpdateIndexDataEvent
->Pimcore\Bundle\GenericDataIndexBundle\DataObject\Asset\UpdateIndexDataEvent
Pimcore\Bundle\PortalEngineBundle\Event\DataObject\UpdateIndexDataEvent
->Pimcore\Bundle\GenericDataIndexBundle\Event\DataObject\UpdateIndexDataEvent
- [Configuration] Moved configuration options
pimcore_portal_engine.index_service.es_client_params
andpimcore_portal_engine.index_service.es_client_params.es_client_name
topimcore_portal_engine.index_service.opensearch_client_params
andpimcore_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_configuration
ofpimcore/general-data-index-bundle
bundle) - [Configuration] Removed configuration options
pimcore_portal_engine.messenger_queue_processing.*
. The queue processing is now handled bypimcore/general-data-index-bundle
bundle and handling it by message workers is now the only/default option. - [Configuration] Removed
pimcore_portal_engine.index_service.index_settings configuration
option. The index settings are now handled bypimcore/general-data-index-bundle
bundle. - [Configuration] Container parameter
portal-engine.elasticsearch.index-prefix
was removed and replaced withgeneric-data-index.index-prefix
ofpimcore/general-data-index-bundle
bundle. - [Configuration] Container parameter
portal-engine.elasticsearch.es-client-name
was removed. Use thegeneric-data-index.opensearch-client
service 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\ElasticSearchFields
enum and replaced it withPimcore\Bundle\GenericDataIndexBundle\Enum\SearchIndex\FieldCategory
andPimcore\Bundle\GenericDataIndexBundle\Enum\SearchIndex\FieldCategory\SystemField
enums ofpimcore/general-data-index-bundle
bundle. - [Code BC breaks] Moved statistic trackers from
Pimcore\Bundle\PortalEngineBundle\Service\StatisticsTracker\Elasticsearch
toPimcore\Bundle\PortalEngineBundle\Service\StatisticsTracker\OpenSearch
and 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
userLoginFields
of classPimcore\Bundle\PortalEngineBundle\Service\Security\Authentication\UserProvider
tofields
- [Search index structure] Moved field paths of
standard_fields
within 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. .raw
subfields are renamed to '.keyword'Pimcore\Bundle\PortalEngineBundle\Migrations\Pimcore11\Version20240208161554
migration 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\PreConditionServiceHandlerInterface
should 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 Declarations
forPortalUser
andPortalUserGroup
classes 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-bundle
bundle. - [Security] Removed support of old authentication system (not setting
security.enable_authenticator_manager: true
insecurity.yaml
) and related Guard authenticators. - [OpenId Connect] Bumped required version of
openid-connect
bundle 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
DataPoolConfigInterface
in methods ofWorkspaceServiceInterface
,SearchServiceInterface
,FolderService
andPreConditionService
. - [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::getUserId
tonull|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\translations
in.yaml
format). - [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.yml
of your app after thepimcore_admin
firewall.
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