Skip to content

Commit 2c7c430

Browse files
committed
Merge remote-tracking branch 'origin/2026.2' into 2026.x
# Conflicts: # .php-cs-fixer.cache # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/exposeRemote.js # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/main.html # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/mf-manifest.json # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/mf-stats.json # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/109.4563ef16.js # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/109.4563ef16.js.LICENSE.txt # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/async/132.c328628b.js # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/async/272.5aa86da5.js # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/async/272.5aa86da5.js.LICENSE.txt # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/async/359.ef7a6289.js # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/async/359.ef7a6289.js.LICENSE.txt # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/async/658.b1390ae9.js # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/async/668.1ae87f0f.js # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/async/668.1ae87f0f.js.LICENSE.txt # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/async/67.8469aaea.js # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/async/67.8469aaea.js.LICENSE.txt # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/async/745.56a11b0d.js # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/async/745.56a11b0d.js.LICENSE.txt # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/async/__federation_expose_default_export.fb39c475.js # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/async/__federation_expose_default_export.fb39c475.js.LICENSE.txt # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/main.e182e610.js # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/main.e182e610.js.LICENSE.txt # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/remoteEntry.js # src/Resources/public/studio/build/4f32b745-f9b5-4d1b-8b00-d1f00a400976/static/js/remoteEntry.js.LICENSE.txt # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/exposeRemote.js # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/main.html # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/mf-manifest.json # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/mf-stats.json # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/109.4563ef16.js # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/109.4563ef16.js.LICENSE.txt # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/async/132.c328628b.js # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/async/272.5aa86da5.js # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/async/272.5aa86da5.js.LICENSE.txt # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/async/359.ef7a6289.js # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/async/359.ef7a6289.js.LICENSE.txt # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/async/658.b1390ae9.js # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/async/668.1ae87f0f.js # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/async/668.1ae87f0f.js.LICENSE.txt # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/async/67.8469aaea.js # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/async/67.8469aaea.js.LICENSE.txt # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/async/745.56a11b0d.js # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/async/745.56a11b0d.js.LICENSE.txt # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/async/__federation_expose_default_export.fb39c475.js # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/async/__federation_expose_default_export.fb39c475.js.LICENSE.txt # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/main.7e59d128.js # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/main.7e59d128.js.LICENSE.txt # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/remoteEntry.js # src/Resources/public/studio/build/6a407c0e-3bcc-4fa2-a16b-6d9c08284c49/static/js/remoteEntry.js.LICENSE.txt # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/exposeRemote.js # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/main.html # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/mf-manifest.json # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/mf-stats.json # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/109.4563ef16.js # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/109.4563ef16.js.LICENSE.txt # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/async/132.c328628b.js # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/async/272.5aa86da5.js # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/async/272.5aa86da5.js.LICENSE.txt # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/async/359.ef7a6289.js # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/async/359.ef7a6289.js.LICENSE.txt # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/async/658.b1390ae9.js # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/async/668.1ae87f0f.js # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/async/668.1ae87f0f.js.LICENSE.txt # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/async/67.8469aaea.js # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/async/67.8469aaea.js.LICENSE.txt # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/async/745.56a11b0d.js # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/async/745.56a11b0d.js.LICENSE.txt # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/async/__federation_expose_default_export.fb39c475.js # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/async/__federation_expose_default_export.fb39c475.js.LICENSE.txt # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/main.6a063635.js # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/main.6a063635.js.LICENSE.txt # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/remoteEntry.js # src/Resources/public/studio/build/95f671da-9389-42d3-a967-b93ab1a220e8/static/js/remoteEntry.js.LICENSE.txt
2 parents 8e24105 + 219b28d commit 2c7c430

46 files changed

Lines changed: 1525 additions & 1413 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 37 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,46 @@
11
---
22
title: Data Importer
33
---
4-
4+
55
# Pimcore Data Importer
66

7-
This extension adds a comprehensive import functionality to Pimcore Datahub. It allows importing data from external
8-
sources and adjusting it to Pimcore Data Objects based on a configured mapping without writing any code.
9-
10-
## Features in a Nutshell
11-
- Multiple imports configuration directly in Datahub.
12-
- Data import from various data sources.
13-
- Supported File Formats: `csv`, `xlsx`, `json`, `xml`.
14-
- Strategies configuration for:
15-
- loading existing elements for updating data.
16-
- defining location for newly imported data.
17-
- publishing data.
18-
- cleanup of existing data.
19-
- Mappings definition for adjusting data to Pimcore Data Objects with:
20-
- simple transformations.
21-
- preview of imported data.
22-
- Imports execution directly in Pimcore Datahub or on a regular base via cron definitions.
23-
- Import status updates and extensive logging information.
7+
The Data Importer adds import functionality to Pimcore Datahub. It reads data from external sources and writes it into
8+
Pimcore data objects based on a configured mapping, without writing code.
249

2510
![Mapping](./doc/img/mapping.png)
2611
*Mapping and preview of data*
2712

28-
## Documentation Overview
29-
- [Installation](./doc/01_Installation.md)
30-
- [Configuration](./doc/03_Configuration/README.md)
31-
- [Import Execution Details](./doc/04_Import_Execution_Details.md)
32-
- [Import Progress and Logging](./doc/05_Import_Progress_and_Logging.md)
33-
- [Extending](./doc/06_Extending/README.md)
34-
- [Troubleshooting/FAQ](./doc/06_Troubleshooting_FAQ.md)
35-
36-
## Further Information
37-
On other Pimcore Datahub adapters and export solutions:
38-
- [Datahub (GraphQL API)](https://pimcore.com/docs/platform/Datahub/)
39-
- [Datahub Simple Rest API](https://pimcore.com/docs/platform/Datahub_Simple_Rest/)
40-
- [Datahub File Export](https://pimcore.com/docs/platform/Datahub_File_Export/)
41-
- [Datahub Productsup](https://pimcore.com/docs/platform/Datahub_Productsup/)
13+
## Features
14+
15+
- Import configurations managed directly in Datahub, edited in Pimcore Studio.
16+
- Six data sources: asset, upload, HTTP, SFTP, push endpoint, and SQL.
17+
- Five file formats: CSV, JSON, XML, XLSX, and SQL query results.
18+
- Resolver strategies that decide whether a record updates an existing data object or creates a new one, where it is
19+
stored, and whether it is published.
20+
- A mapping editor with a live preview of the source data and of every transformation step.
21+
- Delta check to skip unchanged records, and cleanup to remove data objects that left the source.
22+
- Manual, scheduled, command-line and push-triggered execution.
23+
- Progress tracking and detailed import logs.
24+
25+
## Documentation
26+
27+
Start here:
28+
29+
- [Installation](./doc/01_Installation/README.md): install the bundle and set up queue processing.
30+
- [Getting Started](./doc/02_Getting_Started.md): build a first import end to end.
31+
32+
Reference:
33+
34+
- [Configuration](./doc/03_Configuration/README.md): every option of an import configuration.
35+
- [Import Execution Details](./doc/04_Import_Execution_Details.md): what happens between the trigger and the data.
36+
- [Import Progress and Logging](./doc/05_Import_Progress_and_Logging.md): watch and audit an import.
37+
- [Extending](./doc/06_Extending/README.md): custom strategies and events.
38+
- [Troubleshooting / FAQ](./doc/08_Troubleshooting_FAQ.md): common problems.
39+
- [Upgrade Notes](./doc/01_Installation/01_Upgrade.md): breaking changes per release.
40+
41+
## Other Datahub Adapters
42+
43+
- [Datahub (GraphQL API)](https://github.com/pimcore/data-hub/blob/2026.x/doc/01_Installation_and_Upgrade/README.md)
44+
- [Datahub Simple REST API](https://github.com/pimcore/data-hub-simple-rest/blob/2026.x/doc/01_Installation/README.md)
45+
- [Datahub File Export](https://github.com/pimcore/data-hub-file-export/blob/2026.x/doc/01_Installation/README.md)
46+
- [Datahub Productsup](https://github.com/pimcore/data-hub-productsup/blob/2026.x/doc/01_Installation/README.md)

doc/01_Installation.md

Lines changed: 0 additions & 103 deletions
This file was deleted.
Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
# Update Notes
1+
---
2+
title: Upgrade Notes
3+
description: Breaking changes and migration steps per release.
4+
---
5+
6+
# Upgrade Notes
27

38
## Upgrade to 2026.1.0
49

@@ -9,15 +14,19 @@
914

1015
### Removed Admin Classic / ExtJS UI
1116

12-
- Removed `pimcore/admin-ui-classic-bundle` dependency. The bundle no longer implements `PimcoreBundleAdminClassicInterface` or uses `BundleAdminClassicTrait`.
13-
- Removed all ExtJS-based JavaScript and CSS paths (`getCssPaths()`, `getJsPaths()` methods removed from `PimcoreDataImporterBundle`).
17+
- Removed the `pimcore/admin-ui-classic-bundle` dependency. The bundle no longer implements
18+
`PimcoreBundleAdminClassicInterface` and no longer uses `BundleAdminClassicTrait`.
19+
- Removed all ExtJS-based JavaScript and CSS paths. `getCssPaths()` and `getJsPaths()` were removed from
20+
`PimcoreDataImporterBundle`.
1421
- `PimcoreAdminBundle` is no longer registered as a dependent bundle.
15-
- The Admin UI configuration panel is now implemented using the Pimcore Studio UI.
16-
- `Pimcore\Bundle\AdminBundle\Helper\QueryParams` is no longer used; replaced by `DataTypeServiceInterface::extractSortingSettings()`.
22+
- The configuration panel is now implemented in Pimcore Studio.
23+
- `Pimcore\Bundle\AdminBundle\Helper\QueryParams` is no longer used. It was replaced by
24+
`DataTypeServiceInterface::extractSortingSettings()`.
1725

18-
### Studio UI
26+
### Pimcore Studio
1927

20-
- Added Studio UI implementation for the Data Importer configuration panel (tabs: Data Setup, Execution, Import Logs).
28+
- Added the Pimcore Studio implementation of the Data Importer configuration panel, with the tabs Data Setup,
29+
Execution and Import Logs.
2130
- Studio frontend assets are now shipped with the bundle.
2231

2332
### Namespace Changes
@@ -26,23 +35,28 @@
2635

2736
### Messenger Transport Configuration
2837

29-
- The messenger transport DSN is now configurable via the `%pimcore.messenger.transport_dsn_prefix%` container parameter instead of being hardcoded to `doctrine://default`. This allows the installer to wire the transport DSN from environment variables (e.g. `PIMCORE_MESSENGER_TRANSPORT_DSN_PREFIX`).
38+
- The messenger transport DSN is configurable via the `%pimcore.messenger.transport_dsn_prefix%` container parameter
39+
instead of being hardcoded to `doctrine://default`. The installer can now wire the transport DSN from environment
40+
variables such as `PIMCORE_MESSENGER_TRANSPORT_DSN_PREFIX`.
3041

3142
### Interface & Return Type Changes
3243

33-
- `DataTypeServiceInterface`: Added new method `extractSortingSettings(?string $sort): array` to the interface. Any custom implementations of `DataTypeServiceInterface` must implement this method.
44+
- `DataTypeServiceInterface`: added the method `extractSortingSettings(?string $sort): array`. Custom implementations
45+
of the interface must implement it.
3446
- `CronValidationResponse::isValid(): bool` renamed to `CronValidationResponse::getIsValid(): bool`.
3547
- `ImportProgressResponse::isRunning(): bool` renamed to `ImportProgressResponse::getIsRunning(): bool`.
36-
- `PimcoreDataImporterBundle::getInstaller()` return type changed from `?InstallerInterface` to `InstallerInterface` (non-nullable).
48+
- `PimcoreDataImporterBundle::getInstaller()` return type changed from `?InstallerInterface` to
49+
`InstallerInterface` (non-nullable).
3750

3851
### Class Visibility & Finalization
3952

4053
- Many classes have been marked `final` and/or `@internal`. Custom subclasses of these classes are no longer supported:
41-
- `CronScheduler`, `JobScheduler`, `SchedulerFactory` — marked `final` and `@internal`
42-
- `PreviewData` — marked `final` and `@internal`
43-
- `PimcoreDataImporterBundle` — marked `final`
44-
- Various exception classes (`InvalidScheduleException`, etc.) — marked `final`
45-
- Several `protected` methods on final classes have been changed to `private`. If you were overriding these methods in subclasses, you must refactor.
54+
- `CronScheduler`, `JobScheduler`, `SchedulerFactory`: marked `final` and `@internal`
55+
- `PreviewData`: marked `final` and `@internal`
56+
- `PimcoreDataImporterBundle`: marked `final`
57+
- Various exception classes (`InvalidScheduleException`, etc.): marked `final`
58+
- Several `protected` methods on final classes were changed to `private`. Subclasses overriding them have to be
59+
refactored.
4660
- `ConfigDataObjectController::saveAction()` return type changed from `?JsonResponse` to `JsonResponse` (non-nullable).
4761
- `Installer::getLastMigrationVersionClassName()` return type changed from `?string` to `string` (non-nullable).
4862

@@ -56,7 +70,8 @@
5670

5771
### API Schema Changes
5872

59-
- `UnitDataResponse`: Schema property renamed from `UnitList` to `unitList` (camelCase). If you consume this API response, update your client accordingly.
73+
- `UnitDataResponse`: the schema property was renamed from `UnitList` to `unitList`. Update clients consuming this
74+
response.
6075

6176
## Update to Version 1.11
6277

0 commit comments

Comments
 (0)