Upgrade Notes
Things to consider before or when upgrading to new versions.
Upgrade to 2026.1.0
PHP / Dependency Updates
- Added support for
PHP8.5. - Removed support for
PHP8.3and Symfonyv6.
Removed ExtJS / Admin Classic UI
PimcoreDataHubSimpleRestBundleno longer implementsPimcoreBundleAdminClassicInterfaceand no longer usesBundleAdminClassicTrait.- The Admin Classic UI JavaScript and CSS assets have been removed:
js/pimcore/adapter/simpleRest.jsjs/pimcore/configuration/configItem.jsjs/pimcore/configuration/gridConfigDialog.jscss/icons.css
ConfigControllerhas been removed (it served the ExtJS-based configuration UI).StudioRouteLoaderhas been removed; Studio routes are now registered via the standard bundle configuration.
Installer Profile Support
- The bundle installer now implements
PostInstallCommandsProviderInterfacefrom Pimcore's InstallBundle. The following post-install commands are automatically executed duringpimcore:installwhen using Install Profiles:datahub:simple-rest:create-or-update-mapping(priority 10)datahub:simple-rest:init-index(priority 5)- Manual execution of these commands after
pimcore:bundle:installis still required as before.
Messenger Transport DSN Rename
- The messenger transport DSN is now configured via the
%pimcore.messenger.transport_dsn_prefix%container parameter (previously%pimcore.messenger.transport_dsn%). If you override the transport DSN configuration, update your environment variable fromPIMCORE_MESSENGER_TRANSPORT_DSNtoPIMCORE_MESSENGER_TRANSPORT_DSN_PREFIX.
Removed LegacyIndexHandlerFactory
Factory\OpenSearch\LegacyIndexHandlerFactoryhas been removed.IndexHandlernow receivesSearchClientInterfacedirectly via constructor injection instead of relying on the legacy factory and thesetSearchClientInterface()setter method. If you referencedLegacyIndexHandlerFactoryin your service configuration, update it accordingly.
Removed Deprecated Methods
The following methods deprecated in v3.4.0 have been removed:
IndexHandler::queryIndexTreeNavigation()— useexecuteTreeNavigation()instead.QueryService::queryIndexSearch()— useexecuteSearch()instead.QueryService::queryIndexTreeNavigation()— useexecuteTreeNavigation()instead.
Classes Marked as @internal and/or final
All classes in this bundle are now marked as @internal. The following classes are also final. If you were extending or instantiating any of these directly, refactor to use composition, decoration, or event subscribers instead:
Bundle
PimcoreDataHubSimpleRestBundle
Commands
CreateOrUpdateMappingCommandParallelizationAbstractCommand(@internal, notfinal)ProcessQueueCommandResetQueueCommand
Controllers
AbstractController(@internal, notfinal)EndpointControllerSwaggerControllerStudio\Config\GetControllerStudio\Config\GetLabelListControllerStudio\Config\UpdateControllerStudio\Queue\GetItemCountControllerStudio\Thumbnails\CollectionController
DependencyInjection
ConfigurationPimcoreDataHubSimpleRestExtensionCompilerPass\OutputFormatterPass
Events
Event\Studio\PreResponse\ConfigurationDetailEventEvent\Studio\PreResponse\ConfigurationUpdateEventEvent\Studio\PreResponse\LabelListEventEvent\Studio\PreResponse\QueueItemCountEventEvent\Studio\PreResponse\ThumbnailEvent
EventSubscribers
ChangedEventSubscriberConfigurationEventSubscriber
Exceptions
AccessDeniedExceptionInvalidArgumentExceptionInvalidRequestExceptionNotFoundException
Installer
Installer
MappingAndDataExtractor
AbstractMappingAndDataExtractor(@internal, notfinal)AssetMappingAndDataExtractorDataExtractorFactoryDataObjectMappingAndDataExtractorFolderMappingAndDataExtractorWorkspaceResolverOutputFormatter\Formatter\HotspotImageFormatterOutputFormatter\Formatter\ImageFormatterOutputFormatter\Formatter\ImageGalleryFormatterOutputFormatter\Formatter\VideoFormatterOutputFormatter\Loader\TaggedIteratorOutputFormatterLoader
Messenger
QueueDuplicateCleanupHandlerQueueDuplicateCleanupMessageQueueHandlerQueueMessage
Queue
QueueService
Services
AbstractService(@internal, notfinal)IndexHandlerIndexServiceQueryServiceService\Dto\IndexSearchParameterService\Dto\IndexTreeNavigationParameterService\Dto\QueryServiceSearchParameterService\Dto\QueryServiceTreeNavigationParameterService\Studio\ConfigurationServiceService\Studio\QueueStudioServiceService\Studio\ThumbnailService
Tools
Tool\AssetRelationFixer
Return Type Changes
Installer::getLastMigrationVersionClassName()return type changed from?stringtostring(non-nullable).QueryService::queryIndexById()parameter$idtype changed from untyped toint.- All class constants now have explicit visibility modifiers (
public constinstead of bareconst).
Strict Types and Native Type Declarations
declare(strict_types=1)has been added to all PHP files. If you interact with any method from this bundle, ensure your code handles strict type coercion.- Native PHP type declarations (parameter types, return types, property types) have been added throughout the codebase. If you decorate or extend any service, your method signatures must match the updated types.
- Redundant PHPDoc annotations have been removed where native types now express the same information.
v3.5.2
New: --force-recreate option for create-or-update-mapping
The datahub:simple-rest:create-or-update-mapping command now supports a
--force-recreate option that drops the alias and both -even / -odd
physical indexes, recreates a fresh index with the current mapping, and
re-enqueues all elements.
bin/console datahub:simple-rest:create-or-update-mapping <configName> --force-recreate
bin/console datahub:simple-rest:process-queue
The command asks for interactive confirmation before deleting; pass
--no-interaction to skip the prompt in scripts.
Bug fix: mapping for advanced columns in Studio configurations
The mapping for advanced columns in Studio configurations changed from
flat_object / flattened to keyword. This only affects Studio
configurations that use advanced columns.
OpenSearch / Elasticsearch cannot migrate documents from flat_object /
flattened to keyword automatically, so existing Studio indexes with
advanced columns must be rebuilt using the --force-recreate option above.
v3.5.0
With this version and the Pimcore Studio integration, we introduced a new architecture for schema definitions. We are moving from the tree-based schema definition (also used in the grid configuration of the Admin Classic UI) to a pipeline-based approach (also used in Studio UI grids). This change is driven by technical and maintenance considerations, as the tree-based implementation has limitations in terms of consistency, flexibility, and extensibility. The new architecture aligns with how Pimcore Studio UI grids work internally, streamlining the implementation across adapters and improving consistency, stability, and extensibility.
Existing configurations created in the Classic UI remain functional and continue to execute without changes. However, a configuration must be fully migrated to the new pipeline-based format before it can be edited in Pimcore Studio. Migration must be done manually by following the steps provided in the Pimcore Studio UI.
Read-only support for the legacy tree-based schema definitions will be removed in version 2027.1.0.
v3.4.0
The following methods have been deprecated and will be removed in v4.0.0. Use the new DTO-based methods instead:
- IndexHandler:
queryIndexSearch()→ UseexecuteSearch()withQueryParametersDtoqueryIndexTreeNavigation()→ UseexecuteTreeNavigation()withTreeNavigationQueryDto
- QueryService:
queryIndexSearch()→ UseexecuteSearch()withQueryServiceSearchDtoqueryIndexTreeNavigation()→ UseexecuteTreeNavigation()withQueryServiceTreeNavigationDto
v3.3.0
- Added support for
zircote/swagger-phpv5.
v3.1.0
- Added requirement to
symfony/http-foundation^6.3 to support the Request explicit input sources and types. - Added support for Elasticsearch in parallel to Opensearch. Opensearch remains the default search technology. If you are using Elasticsearch, you need to update your symfony configuration as follows:
pimcore_data_hub_simple_rest:
client_name: default
client_type: 'elasticsearch'
- Introduced new service alias
pimcore.datahub.simplerest.search-client. This will replace deprecated aliaspimcore.datahub.simplerest.opensearch-clientwhich will be removed in the next major version. The new service alias can be used to inject the search client into your services. This search client is an instance ofPimcore\SearchClient\SearchClientInterfacewhich is a common interface for OpenSearch and Elasticsearch clients.
v3.0.0
- Removed Pimcore 10 support
- Removed Elasticsearch support
- Added OpenSearch client and OpenSearch support
v2.0.0
- It is possible to add more than one API-key per configuration now. Therefore, the API-key gets stored as an array in the configuration. Configurations from previous versions are still supported, but they get converted to the new format as soon as they get saved.
- Removed Elasticsearch 6 and Elasticsearch 7 support, added support for Elasticsearch 8
- Changed elasticsearch client configuration
v1.7.2
- Data type for asset
fileSizewas changed tolong(wasint). If you run into issues regarding thefileSize, please re-index your data.
v1.5.x to v1.6.0
- Default number of shards is now set to
1(was5). To change the value back to5, see Indexing Options section in Indexing Details.