Skip to main content
Version: 2026.1

Upgrade Notes

Things to consider before or when upgrading to new versions.

Upgrade to 2026.1.0

PHP / Dependency Updates

  • Added support for PHP 8.5.
  • Removed support for PHP 8.3 and Symfony v6.

Removed ExtJS / Admin Classic UI

  • PimcoreDataHubSimpleRestBundle no longer implements PimcoreBundleAdminClassicInterface and no longer uses BundleAdminClassicTrait.
  • The Admin Classic UI JavaScript and CSS assets have been removed:
    • js/pimcore/adapter/simpleRest.js
    • js/pimcore/configuration/configItem.js
    • js/pimcore/configuration/gridConfigDialog.js
    • css/icons.css
  • ConfigController has been removed (it served the ExtJS-based configuration UI).
  • StudioRouteLoader has been removed; Studio routes are now registered via the standard bundle configuration.

Installer Profile Support

  • The bundle installer now implements PostInstallCommandsProviderInterface from Pimcore's InstallBundle. The following post-install commands are automatically executed during pimcore:install when 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:install is 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 from PIMCORE_MESSENGER_TRANSPORT_DSN to PIMCORE_MESSENGER_TRANSPORT_DSN_PREFIX.

Removed LegacyIndexHandlerFactory

  • Factory\OpenSearch\LegacyIndexHandlerFactory has been removed.
  • IndexHandler now receives SearchClientInterface directly via constructor injection instead of relying on the legacy factory and the setSearchClientInterface() setter method. If you referenced LegacyIndexHandlerFactory in your service configuration, update it accordingly.

Removed Deprecated Methods

The following methods deprecated in v3.4.0 have been removed:

  • IndexHandler::queryIndexTreeNavigation() — use executeTreeNavigation() instead.
  • QueryService::queryIndexSearch() — use executeSearch() instead.
  • QueryService::queryIndexTreeNavigation() — use executeTreeNavigation() 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

  • CreateOrUpdateMappingCommand
  • ParallelizationAbstractCommand (@internal, not final)
  • ProcessQueueCommand
  • ResetQueueCommand

Controllers

  • AbstractController (@internal, not final)
  • EndpointController
  • SwaggerController
  • Studio\Config\GetController
  • Studio\Config\GetLabelListController
  • Studio\Config\UpdateController
  • Studio\Queue\GetItemCountController
  • Studio\Thumbnails\CollectionController

DependencyInjection

  • Configuration
  • PimcoreDataHubSimpleRestExtension
  • CompilerPass\OutputFormatterPass

Events

  • Event\Studio\PreResponse\ConfigurationDetailEvent
  • Event\Studio\PreResponse\ConfigurationUpdateEvent
  • Event\Studio\PreResponse\LabelListEvent
  • Event\Studio\PreResponse\QueueItemCountEvent
  • Event\Studio\PreResponse\ThumbnailEvent

EventSubscribers

  • ChangedEventSubscriber
  • ConfigurationEventSubscriber

Exceptions

  • AccessDeniedException
  • InvalidArgumentException
  • InvalidRequestException
  • NotFoundException

Installer

  • Installer

MappingAndDataExtractor

  • AbstractMappingAndDataExtractor (@internal, not final)
  • AssetMappingAndDataExtractor
  • DataExtractorFactory
  • DataObjectMappingAndDataExtractor
  • FolderMappingAndDataExtractor
  • WorkspaceResolver
  • OutputFormatter\Formatter\HotspotImageFormatter
  • OutputFormatter\Formatter\ImageFormatter
  • OutputFormatter\Formatter\ImageGalleryFormatter
  • OutputFormatter\Formatter\VideoFormatter
  • OutputFormatter\Loader\TaggedIteratorOutputFormatterLoader

Messenger

  • QueueDuplicateCleanupHandler
  • QueueDuplicateCleanupMessage
  • QueueHandler
  • QueueMessage

Queue

  • QueueService

Services

  • AbstractService (@internal, not final)
  • IndexHandler
  • IndexService
  • QueryService
  • Service\Dto\IndexSearchParameter
  • Service\Dto\IndexTreeNavigationParameter
  • Service\Dto\QueryServiceSearchParameter
  • Service\Dto\QueryServiceTreeNavigationParameter
  • Service\Studio\ConfigurationService
  • Service\Studio\QueueStudioService
  • Service\Studio\ThumbnailService

Tools

  • Tool\AssetRelationFixer

Return Type Changes

  • Installer::getLastMigrationVersionClassName() return type changed from ?string to string (non-nullable).
  • QueryService::queryIndexById() parameter $id type changed from untyped to int.
  • All class constants now have explicit visibility modifiers (public const instead of bare const).

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() → Use executeSearch() with QueryParametersDto
    • queryIndexTreeNavigation() → Use executeTreeNavigation() with TreeNavigationQueryDto
  • QueryService:
    • queryIndexSearch() → Use executeSearch() with QueryServiceSearchDto
    • queryIndexTreeNavigation() → Use executeTreeNavigation() with QueryServiceTreeNavigationDto

v3.3.0

  • Added support for zircote/swagger-php v5.

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 alias pimcore.datahub.simplerest.opensearch-client which 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 of Pimcore\SearchClient\SearchClientInterface which 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 fileSize was changed to long (was int). If you run into issues regarding the fileSize, please re-index your data.

v1.5.x to v1.6.0

  • Default number of shards is now set to 1 (was 5). To change the value back to 5, see Indexing Options section in Indexing Details.