Skip to content

Commit 49e5a9d

Browse files
authored
[Docs] Release notes (#99)
* [Docs] Release notes * [Docs] Migration Guide * [Docs] fixing links * [Docs] fixing links * [Docs] fixing links
1 parent a169fa0 commit 49e5a9d

6 files changed

Lines changed: 398 additions & 11 deletions

File tree

doc/02_Pimcore_Platform/04_Platform_Versions/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ import VersionTimeline from '@site/src/components/VersionTimeline';
4646

4747
| Version | Release Notes | Module Details | LTS | LTS Support Until |
4848
|---------|--------------|----------------|:---:|-------------------|
49-
| 2026.1 | [Release Notes](../05_Updating_Pimcore/02_Release_Notes/01_2026.1.md) | [Details](01_2026.1.md) | | |
49+
| 2026.1 | [Release Notes](../05_Updating_Pimcore/02_Release_Notes/01_2026.1/README.md) | [Details](01_2026.1.md) | | |
5050
| 2025.4 | [Release Notes](../05_Updating_Pimcore/02_Release_Notes/02_2025.4.md) | [Details](02_2025.4.md) || December 2028 |
5151
| 2025.3 | [Release Notes](../05_Updating_Pimcore/02_Release_Notes/03_2025.3.md) | [Details](03_2025.3.md) | | |
5252
| 2025.2 | [Release Notes](../05_Updating_Pimcore/02_Release_Notes/04_2025.2.md) | [Details](04_2025.2.md) | | |

doc/02_Pimcore_Platform/05_Updating_Pimcore/02_Release_Notes/01_2026.1.md

Lines changed: 0 additions & 9 deletions
This file was deleted.
Lines changed: 241 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,241 @@
1+
# Migration Guide: Pimcore 2026.1
2+
3+
This guide walks through the steps required to migrate an existing Pimcore installation to Platform Version
4+
2026.1. It covers the 2026.1-specific tasks in the sequence they must be performed.
5+
6+
For the general major version upgrade process and background on each phase, see
7+
[Major Version Upgrades](../../03_Major_Version_Upgrades.md).
8+
9+
## Migration Steps
10+
11+
### 1. Update to the Latest 2025.4 Release
12+
13+
Start from the latest available bugfix release of 2025.4. This ensures all deprecation notices and
14+
preparatory changes from the 2025 cycle are in place.
15+
16+
```bash
17+
composer require pimcore/platform-version:"^2025.4" --no-update
18+
COMPOSER_MEMORY_LIMIT=-1 composer update
19+
bin/console doctrine:migrations:migrate
20+
```
21+
22+
### 2. Install Pimcore Studio (if not already done)
23+
24+
2026.1 removes Admin UI Classic entirely. Pimcore Studio must be installed and fully functional before you
25+
upgrade. If Studio is already active in your installation, verify it works correctly and skip to Step 3.
26+
See the [Studio UI installation guide](../../../../03_Getting_Started/01_Installation/03_Advanced_Installation_Topics/02_Pimcore_Studio_Setup.md)
27+
for the full setup guide.
28+
29+
After installation, log into Pimcore Studio and verify it works correctly on 2025.4 before proceeding.
30+
31+
### 3. Resolve All Deprecations
32+
33+
Check for deprecation notices before upgrading:
34+
35+
- **Symfony deprecation log** - `var/log/dev.deprecations.log` or the profiler toolbar in dev mode
36+
- **Code** - search for `@deprecated` usages in your codebase and custom bundles
37+
- **Pimcore Studio** - some deprecations surface as warnings in the UI
38+
39+
Resolve everything you can. For deprecations that depend on third-party bundles, verify those bundles have a
40+
compatible release for 2026.1 before proceeding.
41+
42+
### 4. Back Up
43+
44+
Create a full backup of your database and project files. If the upgrade fails, restore the backup, revert
45+
`composer.lock`, and run `composer install` to return to the previous state.
46+
47+
### 5. Remove Deprecated Bundles from composer.json
48+
49+
The following bundles are removed in 2026.1. Remove them from `composer.json` and clean up any related
50+
service configuration, event listeners, and references in your code. Do not run `composer update` yet -
51+
that happens in Step 9.
52+
53+
Functionality now part of Pimcore Studio:
54+
- `pimcore/advanced-object-search-bundle`
55+
- `pimcore/perspective-editor`
56+
- `pimcore/simple-backend-search-bundle`
57+
58+
Discontinued:
59+
- `pimcore/file-explorer-bundle`
60+
- `pimcore/glossary-bundle`
61+
- `pimcore/google-marketing-bundle`
62+
- `pimcore/newsletter-bundle`
63+
- `pimcore/seo-bundle` (redirects, robots.txt, and sitemaps remain in the core)
64+
- `pimcore/static-routes-bundle`
65+
- `pimcore/system-info-bundle`
66+
- `pimcore/word-export-bundle`
67+
- `pimcore/output-data-config-toolkit`
68+
- `pimcore/web2print-tools`
69+
70+
### 6. Update PHP and Symfony Version Constraints
71+
72+
PHP 8.3 and Symfony 6.x support have been removed.
73+
74+
- Ensure your server runs **PHP 8.4 or 8.5**
75+
- Remove any explicit Symfony 6.x version constraints from `composer.json`
76+
77+
Do not run `composer update` yet. The update to Symfony 7.x happens as part of Step 9.
78+
79+
### 7. Migrate Email Log Folder Structure
80+
81+
The folder structure for email logs has changed to `YYYY/MM/DD/<filename>`. Run this migration against your
82+
current 2025.4 installation before upgrading:
83+
84+
```bash
85+
bin/console pimcore:migrate:mail-logs-folder-structure
86+
```
87+
88+
Alternatively, move the existing log files manually into the new directory structure.
89+
90+
### 8. Fix Database Collation
91+
92+
2026.1 explicitly sets `utf8mb4_unicode_520_ci` on all `utf8mb4` tables and columns. Previous versions did
93+
not specify a collation, so MySQL/MariaDB applied its own default (`utf8mb4_general_ci` on MySQL 5.7/MariaDB,
94+
`utf8mb4_0900_ai_ci` on MySQL 8). The mismatch can cause foreign key constraint errors during the migrations
95+
in Step 11.
96+
97+
This is **not** handled by the standard Doctrine migration - run it manually before upgrading.
98+
99+
**1. Generate ALTER TABLE statements.** Run the query below to produce the statements for all affected
100+
tables. Copy the output.
101+
102+
```sql
103+
SELECT CONCAT(
104+
'ALTER TABLE `', TABLE_NAME,
105+
'` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;'
106+
)
107+
FROM INFORMATION_SCHEMA.TABLES
108+
WHERE TABLE_SCHEMA = 'your_database_name'
109+
AND TABLE_TYPE = 'BASE TABLE'
110+
AND TABLE_COLLATION IN ('utf8mb4_general_ci', 'utf8mb4_0900_ai_ci')
111+
ORDER BY TABLE_NAME;
112+
```
113+
114+
**2. Safety check.** Before executing, verify that no `utf8mb4_bin` columns (used for case-sensitive
115+
keys and JSON data) appear in the results. Those must not be changed.
116+
117+
```sql
118+
SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE, COLLATION_NAME
119+
FROM INFORMATION_SCHEMA.COLUMNS
120+
WHERE TABLE_SCHEMA = 'your_database_name'
121+
AND COLLATION_NAME IN ('utf8mb4_general_ci', 'utf8mb4_0900_ai_ci')
122+
ORDER BY TABLE_NAME, COLUMN_NAME;
123+
```
124+
125+
**3. Execute.** Run the `ALTER TABLE` statements generated above against your database.
126+
127+
### 9. Update to 2026.1
128+
129+
```bash
130+
composer require pimcore/platform-version:"^2026.1" --no-update
131+
COMPOSER_MEMORY_LIMIT=-1 composer update
132+
```
133+
134+
Do not run migrations yet.
135+
136+
### 10. Apply Code Changes
137+
138+
Apply the following breaking changes to your codebase:
139+
140+
- Remove any remaining references to removed bundles or Admin Classic interfaces
141+
(`PimcoreBundleAdminClassicInterface`, `BundleAdminClassicTrait`, `AdminSubscriber`, etc.)
142+
- Update the Messenger transport DSN: rename `PIMCORE_MESSENGER_TRANSPORT_DSN` to
143+
`PIMCORE_MESSENGER_TRANSPORT_DSN_PREFIX` and add a trailing separator
144+
(e.g. `doctrine://default` becomes `doctrine://default?queue_name=`).
145+
This affects both your `.env` files and any deployment configuration (secrets managers, Kubernetes, etc.)
146+
where this variable is set.
147+
- Update OpenSearch/Elasticsearch configuration from the `hosts` array YAML format to the DSN env var format
148+
(`PIMCORE_OPENSEARCH_DSN` or `PIMCORE_ELASTICSEARCH_DSN`)
149+
- If you use the Pimcore installer in CI/CD pipelines, update from `bin/console pimcore:install` to
150+
`vendor/bin/pimcore-install --install-profile=<YourProfileClass>`
151+
152+
Review the [Core Framework upgrade notes](https://github.com/pimcore/pimcore/blob/2026.1/doc/13_Upgrade_Notes/README.md#pimcore-202610)
153+
and the upgrade notes of each bundle you use (see [All Bundle Upgrade Notes](README.md#upgrade-notes)).
154+
155+
Clear the Symfony container cache after applying changes:
156+
157+
```bash
158+
bin/console cache:clear
159+
```
160+
161+
### 11. Run Migrations
162+
163+
```bash
164+
bin/console doctrine:migrations:migrate
165+
```
166+
167+
### 12. Rebuild Class Definitions
168+
169+
After migrations, rebuild the object class definitions to ensure all generated PHP classes reflect the
170+
current state:
171+
172+
```bash
173+
bin/console pimcore:deployment:classes-rebuild
174+
```
175+
176+
### 13. Clear Application Caches
177+
178+
```bash
179+
bin/console pimcore:cache:clear
180+
```
181+
182+
### 14. Test
183+
184+
- Log into Pimcore Studio and verify data objects, assets, and documents load and save correctly
185+
- Run your automated test suite
186+
- Verify custom bundles, integrations, and event listeners
187+
- Check functionality related to resolved deprecations
188+
189+
## Post-Upgrade Manual Work
190+
191+
The following cannot be handled by Composer or migrations. Plan time for these after the upgrade is complete.
192+
193+
### Perspectives and Custom Views
194+
195+
From a functional standpoint, perspectives and custom views serve the same purpose in Pimcore Studio as in
196+
the Classic UI. The technical implementation is entirely different, however. Existing perspectives and custom
197+
views cannot be imported or automatically converted - they must be recreated in Pimcore Studio.
198+
199+
### Dashboards
200+
201+
Dashboards created in the Classic UI are not compatible with Pimcore Studio and must be recreated. Reports
202+
used within dashboards are unaffected and continue to work without migration.
203+
204+
### Custom Grid Configurations
205+
206+
The technical implementation of grid configurations has changed completely. All existing custom grid
207+
configurations must be rebuilt in Pimcore Studio - including globally defined configurations and user-level
208+
configurations. Custom grid operators must also be reviewed and updated for compatibility with the new
209+
grid architecture.
210+
211+
### Datahub Configuration Schema Migration
212+
213+
Datahub File Export, Datahub Productsup, Datahub Simple REST, and Datahub Webhooks have moved from a
214+
tree-based schema definition to a pipeline-based architecture. Existing configurations continue to execute
215+
without changes. However, a configuration must be fully migrated to the new format before it can be edited
216+
in Pimcore Studio. Migration is done through the Pimcore Studio UI.
217+
218+
Read-only support for the legacy tree-based schema definition will be removed in 2027.1.0.
219+
See the [Release Notes](README.md#datahub-configuration-schema-changes) and the upgrade notes of the
220+
affected bundles for details.
221+
222+
### Custom Bundles and Backend Extensions
223+
224+
Custom bundles, event listeners, service definitions, and integrations must all be reviewed. Pay particular
225+
attention to:
226+
227+
- Admin Classic UI extensions, plugins, and custom controllers - removed, must be reimplemented for
228+
Pimcore Studio if still needed
229+
- Custom grid operators - review for compatibility with the new pipeline-based grid architecture
230+
- Event listeners referencing removed classes (`AdminSubscriber`,
231+
`PimcoreBundleAdminClassicInterface`, etc.)
232+
- Any code that depends on the removed bundles listed in Step 5
233+
234+
Test all custom functionality in a staging environment before going live.
235+
236+
## Further Resources
237+
238+
- [Release Notes for 2026.1](README.md)
239+
- [Major Version Upgrades](../../03_Major_Version_Upgrades.md)
240+
- [Core Framework Upgrade Notes](https://github.com/pimcore/pimcore/blob/2026.1/doc/13_Upgrade_Notes/README.md#pimcore-202610)
241+
- [All Bundle Upgrade Notes](README.md#upgrade-notes)

0 commit comments

Comments
 (0)