Upgrade Information
The following steps are necessary during updating to newer versions.
Upgrade to 2026.4.0
Embeddings
auth_tokenandoptions.headersof an embedding model now reject unescaped%name%parameter references in addition to%env(...)%placeholders, in Studio, inconfig/packages/*.yamland in theembeddingswrite-target yaml. A configuration that uses one fails validation after the update; replace it with the literal value, or escape a literal%as%%.- On Studio saves and uploads, the text of document and plain-text assets is extracted by the index queue worker instead of during the request, so their vectors appear once the worker has processed the asset.
- Inputs the provider rejects permanently (HTTP 400/413/422) are isolated and stamped with an
emb_<model>[__<format>]_failedtimestamp; thebpt_embedding_reconcilemaintenance task retries them at most once every 24 hours. No index recreation is needed.
Duplicates Detection
- A running analysis can only be canceled by the user who started it or by an admin
Semantic Search (experimental)
- Semantic grid search now cuts off weak matches with a default minimum score (text 20 %, image 8 %) instead
of returning the top 150 hits. Set
semantic_search.targets.<text|image>.default_min_scoreto0(or sendminScore: 0) to keep every hit. - Candidates per search are limited by
semantic_search.candidate_cap(default 10000) instead of 150, so totals and paging go deeper; lower the cap on large indexes if searches get slow. - The global semantic search endpoint applies the same default minimum score; its candidates per index are
configurable via
semantic_search.global_search_candidate_cap(default 150, unchanged). - CSV/XLSX exports and batch actions of a semantic grid now apply the semantic filter with the job owner's permissions, so they contain the same elements as the grid.
- New
semantic_searchconfiguration record (System → Semantic Search Configuration); run the migrations to seed it. - Requires
pimcore/studio-backend-bundle,pimcore/studio-ui-bundleandpimcore/generic-data-index-bundle2026.4.
Upgrade to 2026.3.0
- Added Embeddings (experimental) – off by default.
- New public API -
EmbeddingProviderInterface,AbstractHttpEmbeddingProvider,EmbeddingModelConfigandEmbeddingConfigExceptionare public so a custom provider can be implemented.
Embeddings are adding a new table, please execute the migration command after updating the bundle:
bin/console doctrine:migrations:migrate --prefix='Pimcore\Bundle\BackendPowerToolsBundle\Migrations'
Upgrade to 2026.2.6
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
- The bundle installer now implements
PostInstallCommandsProviderInterfacefrom Pimcore's InstallBundle. This means the post-install commandbpt:aet:rebuild-tree -ais automatically executed duringpimcore:installwhen using Install Profiles. Manual execution of this command afterpimcore:bundle:installis still required as before. - The messenger transport DSN is now configurable via the
%pimcore.messenger.transport_dsn_prefix%container parameter instead of being hardcoded todoctrine://default. This allows the installer to wire the transport DSN from environment variables (e.g.PIMCORE_MESSENGER_TRANSPORT_DSN_PREFIX). - Added support to
PHP8.5. - Removed support to
PHP8.3and Symfonyv6.