Upgrade Notes
Upgrade to 2026.4.0
LoadAssetno longer extendsImportAsset; both extend the newAbstractAssetOperator. A check forinstanceof ImportAssetno longer matches the Load Asset operator.
Upgrade to 2026.3.3
XML Values Keep Their Text When Typing Would Change Them
- The XML interpreter no longer converts a numeric looking value to a number when that would change it.
603E709used to becomeINFand aborted the import,0123was stored as83. Such values now stay text. - Values that stay text now:
0123(was83),12.50(was12.5),1.0,+5,1E5,0x1F,0b101. Plain values such as42,-7,1.5,true,falseandnullare converted as before. - If a column with such values is used as identifier (resolver, cleanup) or in a delta check, review it before the first import after the upgrade: the resolver may not find objects stored under the old value (duplicates), cleanup may unpublish or remove them, and the affected rows are imported again once.
- Operators that rely on a typed value answer differently for these inputs: the Boolean operator gave
truefor1.0and now givesfalse, the Numeric operator returns0.0for0x1F(was31).
Upgrade to 2026.3.0
Skipping Element Persistence From a PreSaveEvent Listener
DataObject\PreSaveEventnow carries a skip flag: a listener can callsetSkipSave(true)to stop the import from persisting the current element. The element is not saved,DataObject\PostSaveEventis not dispatched, and the skip is written to the import log. Processing continues with the next record.- A skipped element that already exists is reloaded afterwards, so the changes the mapping applied to it in memory cannot leak into a later row that resolves the same element.
- The flag defaults to
false, so imports without such a listener behave exactly as before. No migration needed.
Upgrade to 2026.2.6
Frontend Build Ships as a Packaged Archive
- The compiled Studio frontend is no longer committed as an expanded
src/Resources/public/studio/build/directory. It now ships as a single archive (build-dist/build-<id>.zip) that is extracted intosrc/Resources/public/studio/build/automatically during cache warmup. - The extraction is provided by
pimcore/studio-ui-bundle, which this bundle already requires at^2026.2.6. No dependency change is needed. - Read-only filesystem deployments must run
bin/console cache:warmup(orcache:clear) during the build/deploy phase, while the bundle directory (usually belowvendor/) is still writable. Standard Pimcore deployments already do this. - When
assets: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 throwsBuildArchiveNotWritableException, because 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 implementsPimcoreBundleAdminClassicInterfaceand no longer usesBundleAdminClassicTrait. - Removed all ExtJS-based JavaScript and CSS paths.
getCssPaths()andgetJsPaths()were removed fromPimcoreDataImporterBundle. PimcoreAdminBundleis no longer registered as a dependent bundle.- The configuration panel is now implemented in Pimcore Studio.
Pimcore\Bundle\AdminBundle\Helper\QueryParamsis no longer used. It was replaced byDataTypeServiceInterface::extractSortingSettings().
Pimcore Studio
- Added the Pimcore Studio implementation of the Data Importer configuration panel, with the tabs Data Setup, Execution and Import Logs.
- Studio frontend assets are now shipped with the bundle.
Namespace Changes
- Changed namespace from
Pimcore\Log\ApplicationLoggertoPimcore\Bundle\ApplicationLoggerBundle\ApplicationLogger.
Messenger Transport Configuration
- The messenger transport DSN is configurable via the
%pimcore.messenger.transport_dsn_prefix%container parameter instead of being hardcoded todoctrine://default. The installer can now wire the transport DSN from environment variables such asPIMCORE_MESSENGER_TRANSPORT_DSN_PREFIX.
Interface & Return Type Changes
DataTypeServiceInterface: added the methodextractSortingSettings(?string $sort): array. Custom implementations of the interface must implement it.CronValidationResponse::isValid(): boolrenamed toCronValidationResponse::getIsValid(): bool.ImportProgressResponse::isRunning(): boolrenamed toImportProgressResponse::getIsRunning(): bool.PimcoreDataImporterBundle::getInstaller()return type changed from?InstallerInterfacetoInstallerInterface(non-nullable).
Class Visibility & Finalization
- Many classes have been marked
finaland/or@internal. Custom subclasses of these classes are no longer supported:CronScheduler,JobScheduler,SchedulerFactory: markedfinaland@internalPreviewData: markedfinaland@internalPimcoreDataImporterBundle: markedfinal- Various exception classes (
InvalidScheduleException, etc.): markedfinal
- Several
protectedmethods on final classes were changed toprivate. Subclasses overriding them have to be refactored. ConfigDataObjectController::saveAction()return type changed from?JsonResponsetoJsonResponse(non-nullable).Installer::getLastMigrationVersionClassName()return type changed from?stringtostring(non-nullable).
Doctrine
- Removed Doctrine enum mapping from the bundle configuration.
Dependency Updates
phpoffice/phpspreadsheetversion requirement bumped to^4.3 || ^5.1(dropped^2.2 || ^3.3).
API Schema Changes
UnitDataResponse: the schema property was renamed fromUnitListtounitList. Update clients consuming this response.
Update to Version 1.11
General
- Added support of
doctrine/dbalv4, dropped support ofdoctrine/dbalv2
Update to Version 1.10
General
- Dropped support of Pimcore 10, bumped minimum requirement of
pimcore/pimcoreto^11.2.