Upgrade Information
The following steps are necessary during updating to newer versions.
Upgrade to 2025.4.15
- [Translations] Fixed: website translations for locales that are not admin UI languages (e.g.
fr_BE,nl_BE) could not be maintained.POST /translations/listonly returned values for the available admin UI languages, so these columns stayed empty, and sorting by such a locale failed. The list now returns the languages the user is allowed to view for the requested domain (admin UI languages for theadminandstudiodomains), as in the classic admin UI.
Note: this comes with the following behavioral changes for the translation list (
POST /translations/list) and, where noted, the CSV export (POST /translations/export) and import:
- Users with restricted website translation languages only receive values for their allowed languages, also for requests without
filters.- Website translation languages configured on a user or role that are not valid system languages are ignored. A user without any valid website translation language left receives
403for list, export and import (previously an empty result).- All
translationLikecolumn filters of a request are applied (previously only the first one). AtranslationLikefilter on a language that is not available to the user returns422. The filter only applies to translation listings.- Additional sort filters on a locale are supported (previously failed with a database error).
- The translation list no longer uses the core translation listing cache for the list of keys, as that cache does not take the requested languages into account. Translation values are still cached per key and language.
Upgrade to 2025.4.13
- [Data Objects] Fixed:
POST /data-objects/select-optionsfailed withCall to a member function getDataFromEditmode() on nullas soon aschangedDatacontained unsaved localized fields. The endpoint decodedchangedDatawith the classic editmode format (localized fields as language → attribute) while Studio sends its own data format (attribute → language).changedDatais now applied through the same data adapters as a regular save, so it expects the Studio data format for every field type. Language edit permissions of non-admin users are now respected per language as well, instead of being matched against attribute names.
Note: the internal
ApplyChangesHelper(DataObject\Legacy) and its interface are deprecated and will be removed in 2027.1.0, since the select-options endpoint was their only consumer. They still expect the classic editmode data format; useDataServiceInterface::updateEditableData()with the Studio data format instead.
Upgrade to 2025.4.7
- [User Management] Fixed:
GET /user/{id}could time out or run out of memory when the user was referenced by a very large number of DataObjects (e.g. via aUser-type class field), because the full, unbounded list of referencing objects was hydrated and embedded in every response. TheobjectDependencies.dependenciesarray on theUserschema is now capped at 20 entries, and a new paginatedGET /user/{id}/object-dependenciesendpoint was added to browse the full list.
Note: the
objectDependenciesschema itself has no breaking change -dependenciesandhasHiddenkeep their existing names, types, and meaning. The newtotalItemsfield is marked optional in the OpenAPI schema (even though it is always present in the actual response) specifically so that generated SDK types remain source-compatible with any existing code that constructs or mocks anobjectDependencies-shaped value without it. There is, however, a behavioral compatibility impact worth knowing about:dependenciespreviously contained the user's complete list of referencing objects, and now stops at 20. Any existing integration that assumeddependencieswas exhaustive (rather than checkingtotalItems) will now silently see only the first 20 - such integrations must start readingtotalItemsand, if it exceedsdependencies.length, call the new paginatedGET /user/{id}/object-dependencies?page=&pageSize=endpoint to get the rest.hasHiddenis affected the same way: it now only reflects permission-denied objects within that 20-item window, not across the full list as before. In both the preview and the new paginated endpoint,totalItemscounts every referencing object regardless of the caller's view permission on it - it does not shrink to match what the caller can actually see, so a page (or the preview) can legitimately come back shorter than requested, or empty, whiletotalItemsstays the same.
Upgrade to 2025.4.6
- [GDPR Objects Export] Fixed: the data object export now includes inherited values (including inherited localized fields).
Note: the structure of the exported data changed slightly to align with the Studio API data structure (e.g., relations are now exported as structured element data instead of plain
id/typepairs).
Upgrade to 2025.4.5
- [Grid Configuration] Fixed: Changed the length of
classIdcolumn inbundle_studio_grid_configurationsandbundle_studio_grid_configuration_favoritestables from 10 to 50 characters to support longer class IDs.
Migration execution required
After upgrading, please execute the migration to apply the necessary database changes.
Note: Grid configurations that were previously saved with a class ID longer than 10 characters have a truncated
classIdvalue in the database and will not be recovered by this migration. These configurations need to be deleted and re-saved after upgrading.