Commit 4698dfb
[Docs] Update and refine docs (#657)
* Restructure and correct Data Importer documentation
Reorder the docs to follow the Studio "Data Setup" wizard, add a
Getting Started walkthrough, and resolve duplicate numeric prefixes
(03_Configuration/03_Upgrade, 06_Extending/06_Troubleshooting_FAQ).
Correct content that no longer matched the source:
- Installation targeted Pimcore 10.5/11 and admin-ui-classic-bundle.
composer.json requires pimcore/pimcore ^2026.1 and PHP 8.4/8.5, and
registerDependentBundles() wires Datahub automatically.
- Element Location Update was documented as applying to all imported
objects. Resolver::loadOrCreateAndPrepareElement() applies the
creation strategy to new elements and the update strategy to
existing ones only.
- CSV "Skip First Row" was documented as turning the header row into
column names. It only skips the row; the separate "Save Header Name"
option does that.
- The Extending page described the removed ExtJS plugin API. The
frontend is now a Studio UI plugin using dynamic type registries.
Document features present in code and UI but not in the docs: the
Upload data source, the SQL file format, the String Replace operator,
the Many-to-Many Relation data target, the Find or Create Folder and
Do Not Create location strategies, As Variant, Include unpublished
objects, the ID data index gating Delta Check and Cleanup, the
Write If Target Is Not Empty / Write If Source Is Empty flags,
Autofill, the one-time job schedule, and PostPreparationEvent.
Replace doc/07_Studio.md, a hand-maintained mirror of the Studio REST
API, with doc/06_Extending/03_Studio_Integration.md. All 20 Studio
controllers are @internal and Studio serves generated OpenAPI docs at
/pimcore-studio/api/docs, so the copy could only drift. It already had:
it named the PHP constant PLUGIN_DATA_IMPORTER_CONFIG as the permission,
whose value is plugin_datahub_config. The replacement keeps the
permission model, the API docs location, and the supported ways to
drive imports from outside.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019LmFQ3VND6uUqMpWsmppz6
* Replace Admin Classic screenshots with Pimcore Studio captures
Recapture the Data Importer screenshots from Pimcore Studio on the
public demo. The previous images showed the removed ExtJS Admin Classic
interface.
Replaced: datasource_asset, datasource_sql, import_preview,
resolver_settings, transformation_pipeline, data_target_direct,
execution, logging, and a fresher mapping.
Added: data_target_types (all four data target types) and
processing_settings, neither of which had an image.
Correct three details the live UI disproved:
- The tab order is General, Data Setup, Execution, Import Logs,
Permissions. Getting Started listed Permissions second.
- Start Import sits in the Manual Execution panel, not in the
Execution Settings panel.
- The Data Source Type dropdown lists HTTP before SFTP.
Verified live against the demo: the six data sources, the five Data
Setup steps, the four data target types including Many-to-Many Relation,
the Import Asset options (Parent folder, Use existing, Overwrite
existing, Preg match), the Processing Settings groups, and the two
schedule types.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019LmFQ3VND6uUqMpWsmppz6
* Restructure installation and complete the Studio event list
- Installation becomes a folder with the upgrade notes as its subpage, matching
the other bundles.
- Delete the Studio Integration page. It described @internal endpoints and
duplicated permissions. The supported-interfaces table ("driving imports from
outside Pimcore": push data source, the CLI commands, Messenger) was the
valuable part and moves to Import Execution Details.
- Permissions are now documented once, in the installation chapter, covering the
gate, adapter and per-configuration permissions.
- The events page named three Studio events as examples. There are fourteen.
Document all of them, with payloads read from each event class.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019LmFQ3VND6uUqMpWsmppz6
* Require installing the Datahub bundle, not only loading it
The page said Composer pulls Datahub in and the bundle registers it as a
dependent bundle, which reads as "Datahub is set up automatically". It is not.
registerDependentBundles only loads a bundle into the kernel, and
pimcore:bundle:install never cascades. Datahub's own installer is what creates
the plugin_datahub_config permission and the Datahub permission category this
adapter's controllers require, so without it every non-admin user is locked out.
Add the explicit install step for Datahub.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019LmFQ3VND6uUqMpWsmppz6
* Recapture the execution screenshots and document the XLSX sheet default
The execution and troubleshooting screenshots were still Admin Classic. Recapture
the manual execution, execution status and cron settings in Pimcore Studio, each
cropped to its own section. Remove datasource.png, which no page references.
Add the XLSX Sheet Name default (Sheet1), which XlsxFileInterpreter applies.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019LmFQ3VND6uUqMpWsmppz6
* Recapture Studio screenshots at the agreed resolution
Reshoot the Data Setup screenshots against real demo data at 1440x900 and crop them to
the relevant section:
- execution / faq_execution_status: taken during an actual import run, so the progress
bar and item counter show real values.
- datasource_asset, datasource_sql, processing_settings: proper section crops, no cut
content.
- mapping: wider crop with real source preview values.
- transformation_pipeline, data_target_types, data_target_direct: modal-only crops, no
background bleed. data_target_direct now shows the Direct target with its own config
fields instead of repeating the type dropdown.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* Correct the per-configuration permission model
The adapter permission and the Permissions tab are alternatives, not layers:
Configuration::isAllowed() falls back to plugin_datahub_adapter_dataImporterDataObject
only while the permission grid is empty, and ignores it entirely once a single user or
role entry exists. Also document plugin_datahub_admin, which bypasses both.
* Fix result type and operator details in the mapping reference
The Many-to-Many Relation target accepts advancedDataObjectArray, not
advancedDataObject; the product's own error message is wrong, supportsType() is
authoritative. The Date operator has a Format setting defaulting to Y-m-d rather
than requiring one. Add the 10 MB limit both preview file options enforce.
* Document which triggers respect the Active flag
prepareImport() is called with $ignoreActiveFlag = true only from the manual
Start Import action; execute-cron and prepare-import skip inactive configurations.
* Drop the duplicate execution status screenshot
faq_execution_status.png was byte-identical to execution.png after the recapture.
Reference the single remaining file from both pages.
* Use Pimcore Studio consistently and wrap the upgrade notes at 120 chars
* Address Copilot review findings on the restructured docs
Verified each claim against the source before applying:
- Custom Strategies: cleanup strategies and element factories have no Studio
registry. The cleanup options are hard-coded in processing-settings-step.tsx
and the factory is not exposed at all, so mark both backend-only in the
extension point table instead of implying a settings form can be registered.
- Import Execution Details: preparation does not always queue one item per
record. AbstractInterpreter::processImportRow() skips unchanged records when
Delta Check is enabled.
- Data Sources: drop the recommendation to encode credentials into the HTTP
URL. HttpLoader puts the full URL into its InvalidConfigurationException, so
the password reaches logs and error reporting.
- Getting Started: the Studio operator is labeled "Numeric", not "As Numeric"
(dynamic-type-transformer-numeric.tsx).
- Processing Settings: DeltaChecker::hasChanged() writes the hash during
preparation, before the record is processed, so a failed record is skipped on
the next identical run. Document the actual checkpoint.
- Troubleshooting: the "command is already running" message is also the normal
result of a concurrent run. Require process verification first, note the 24h
lock TTL from SequentialProcessQueueCommand, and stop assuming the database
lock store.
- File Formats: there is no JMESPath validation on save. ConfigurationService
persists the array directly; JsonFileInterpreter::setSettings() parses the
expression only when the interpreter is instantiated for preview or import.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011gNY3NwTbQPwco5wyWgpE8
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 25721c4 commit 4698dfb
46 files changed
Lines changed: 1525 additions & 1413 deletions
File tree
- doc
- 01_Installation
- 03_Configuration
- 05_Mapping_Configuration
- 02_Data_Target
- 06_Mapping_Configuration
- 03_Data_Target
- 06_Extending
- img
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
| 7 | + | |
| 8 | + | |
24 | 9 | | |
25 | 10 | | |
26 | 11 | | |
27 | 12 | | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
This file was deleted.
Lines changed: 31 additions & 16 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
2 | 7 | | |
3 | 8 | | |
4 | 9 | | |
| |||
9 | 14 | | |
10 | 15 | | |
11 | 16 | | |
12 | | - | |
13 | | - | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
14 | 21 | | |
15 | | - | |
16 | | - | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
17 | 25 | | |
18 | | - | |
| 26 | + | |
19 | 27 | | |
20 | | - | |
| 28 | + | |
| 29 | + | |
21 | 30 | | |
22 | 31 | | |
23 | 32 | | |
| |||
26 | 35 | | |
27 | 36 | | |
28 | 37 | | |
29 | | - | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
30 | 41 | | |
31 | 42 | | |
32 | 43 | | |
33 | | - | |
| 44 | + | |
| 45 | + | |
34 | 46 | | |
35 | 47 | | |
36 | | - | |
| 48 | + | |
| 49 | + | |
37 | 50 | | |
38 | 51 | | |
39 | 52 | | |
40 | 53 | | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
46 | 60 | | |
47 | 61 | | |
48 | 62 | | |
| |||
56 | 70 | | |
57 | 71 | | |
58 | 72 | | |
59 | | - | |
| 73 | + | |
| 74 | + | |
60 | 75 | | |
61 | 76 | | |
62 | 77 | | |
| |||
0 commit comments