Upgrade Information
The following steps are necessary during updating to newer versions.
Upgrade to 2026.2.5
Frontend Build Ships as a Packaged Archive
The compiled Studio frontend is no longer committed as an expanded
public/studio/build/ directory. It now ships as a single archive
(build-dist/build-<id>.zip) that is extracted into public/studio/build/
automatically during cache warmup.
pimcore/studio-ui-bundle ^2026.2.1 is now required, as it provides the
archive extraction.
Note: Read-only filesystem deployments must run
bin/console cache:warmup(orcache:clear) during the build/deploy phase while the bundle directory (usually undervendor/) is still writable. Standard Pimcore deployments already do this. Whenassets:installruns in copy mode, runcache:warmupbefore it, otherwise no frontend assets are copied. If the filesystem becomes read-only before the first warmup, the bundle fails withBuildArchiveNotWritableExceptionbecause there is no build to serve.
Upgrade to 2026.1.0
PHP & Symfony Version Support
- Added support for
PHP8.5. - Removed support for
PHP8.3and Symfonyv6.
Removed Admin Classic / ExtJS UI
- Removed the
pimcore/admin-ui-classic-bundledependency. The bundle no longer implementsPimcoreBundleAdminClassicInterfaceor usesBundleAdminClassicTrait. - Removed all ExtJS-based JavaScript and CSS paths (
getCssPaths()andgetJsPaths()methods removed fromPimcoreDataQualityManagementBundle). PimcoreAdminBundleis no longer registered as a dependent bundle.TreeBadgeServiceandTreeBadgeServiceInterfacehave been removed (they were@internal).
Interface & Return Type Changes
RuleDefinitionInterface::getSuggestion(): The parameterarray $objectDatahas been replaced byConcrete $object. Custom rule definitions implementing this interface must accept aPimcore\Model\DataObject\Concreteinstance instead of an array.AbstractRuleDefinition::getSuggestion(): Same change as above. Custom classes extendingAbstractRuleDefinitionmust update theirgetSuggestion()signature fromarray $objectDatatoConcrete $object.ScoreServiceInterface::calculateScores(): Added a new required parameterarray $fieldDefinitionsbetween$dataObjectand$skipSaving. Custom implementations ofScoreServiceInterfacemust be updated.- Old:
calculateScores(Concrete $dataObject, bool $skipSaving = false): void - New:
calculateScores(Concrete $dataObject, array $fieldDefinitions, bool $skipSaving = false): void
- Old:
DetailWidgetHydratorInterface::hydrate(): The parameterarray $objectDatahas been replaced byConcrete $object. This interface is@internal.RuleDataHydratorInterface::hydrate(): The parameterarray $objectDatahas been replaced byConcrete $object. This interface is@internal.
Messenger Transport Configuration
- The messenger transport DSN is now configurable via the
%pimcore.messenger.transport_dsn_prefix%container parameter instead of being hardcoded todoctrine://default. This lets the installer wire the transport DSN from environment variables (for examplePIMCORE_MESSENGER_TRANSPORT_DSN_PREFIX).
Pimcore Studio Enhancements
- Added Studio class editor field type support for the Data Quality field definition, including rule definition configuration via Pimcore Studio.
Doctrine
- Removed Doctrine enum mapping from the bundle test configuration.
Upgrade to 1.6.0
- Added
Pimcore Studio Backend Bundlesupport. - [Custom Rules] The data structure of the
getSuggestion()method's object parameter differed between Admin Classic and Pimcore Studio at the time. This distinction no longer applies: since the 2026.1.0 upgrade,getSuggestion()always receives aPimcore\Model\DataObject\Concreteinstance. See Custom Rule Definition for the current signature.