Skip to content

[Docs] Update and refine docs#657

Merged
fashxp merged 12 commits into
2026.2from
docs/restructure-data-importer
Jul 22, 2026
Merged

[Docs] Update and refine docs#657
fashxp merged 12 commits into
2026.2from
docs/restructure-data-importer

Conversation

@fashxp

@fashxp fashxp commented Jul 14, 2026

Copy link
Copy Markdown
Member

No description provided.

fashxp and others added 4 commits July 10, 2026 09:29
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
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
- 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
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
@fashxp fashxp self-assigned this Jul 14, 2026
@fashxp fashxp added the Task label Jul 14, 2026
fashxp and others added 7 commits July 14, 2026 15:26
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
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>
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.
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.
prepareImport() is called with $ignoreActiveFlag = true only from the manual
Start Import action; execute-cron and prepare-import skip inactive configurations.
faq_execution_status.png was byte-identical to execution.png after the recapture.
Reference the single remaining file from both pages.
Copilot AI review requested due to automatic review settings July 20, 2026 13:17

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Reorganizes and expands Data Importer documentation for Pimcore Studio and the 2026.x release line.

Changes:

  • Adds installation, getting-started, troubleshooting, and detailed reference guides.
  • Updates Studio workflows, extension points, events, and execution behavior.
  • Removes obsolete paths and legacy API documentation.

Reviewed changes

Copilot reviewed 31 out of 46 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
README.md Refreshes project overview and navigation.
doc/08_Troubleshooting_FAQ.md Adds expanded troubleshooting guidance.
doc/07_Studio.md Removes internal Studio API reference.
doc/06_Troubleshooting_FAQ.md Removes superseded FAQ.
doc/06_Extending/README.md Updates extension overview.
doc/06_Extending/03_Events.md Removes old events page.
doc/06_Extending/02_Events.md Documents import and Studio events.
doc/06_Extending/01_Extend_Custom_Strategies.md Removes obsolete extension guide.
doc/06_Extending/01_Custom_Strategies.md Adds Studio-oriented strategy guide.
doc/05_Import_Progress_and_Logging.md Expands progress and logging documentation.
doc/04_Import_Execution_Details.md Clarifies preparation and processing phases.
doc/03_Configuration/README.md Reorganizes configuration navigation.
doc/03_Configuration/07_Execution_Configuration.md Expands trigger and scheduling guidance.
doc/03_Configuration/06_Processing_Settings.md Adds updated processing reference.
doc/03_Configuration/06_Mapping_Configuration/README.md Removes old mapping path.
doc/03_Configuration/06_Mapping_Configuration/03_Data_Target/README.md Removes old target reference.
doc/03_Configuration/06_Mapping_Configuration/03_Data_Target/05_Classification_Store_Batch_Details.md Removes old batch guide.
doc/03_Configuration/06_Mapping_Configuration/02_Transformation_Pipeline.md Removes old pipeline guide.
doc/03_Configuration/05_Processing_Settings.md Removes superseded processing page.
doc/03_Configuration/05_Mapping_Configuration/README.md Adds mapping and autofill reference.
doc/03_Configuration/05_Mapping_Configuration/02_Data_Target/README.md Documents current target types.
doc/03_Configuration/05_Mapping_Configuration/02_Data_Target/01_Classification_Store_Batch_Details.md Adds relocated batch guide.
doc/03_Configuration/05_Mapping_Configuration/01_Transformation_Pipeline.md Documents current operators.
doc/03_Configuration/04_Resolver_Settings.md Expands resolver strategy documentation.
doc/03_Configuration/03_Import_Preview.md Clarifies preview behavior.
doc/03_Configuration/02_File_Formats.md Expands format reference.
doc/03_Configuration/01_Data_Sources.md Expands source reference.
doc/02_Getting_Started.md Adds first-import walkthrough.
doc/01_Installation/README.md Adds current installation guide.
doc/01_Installation/01_Upgrade.md Refines upgrade notes.
doc/01_Installation.md Removes obsolete installation page.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread doc/06_Extending/01_Custom_Strategies.md Outdated
Comment thread doc/04_Import_Execution_Details.md Outdated
Comment thread doc/03_Configuration/01_Data_Sources.md Outdated
Comment thread doc/02_Getting_Started.md Outdated
Comment thread doc/03_Configuration/06_Processing_Settings.md Outdated
Comment thread doc/08_Troubleshooting_FAQ.md Outdated
Comment thread doc/03_Configuration/02_File_Formats.md Outdated
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
@sonarqubecloud

Copy link
Copy Markdown

@fashxp fashxp added this to the 2026.2.1 milestone Jul 20, 2026
@fashxp
fashxp merged commit 4698dfb into 2026.2 Jul 22, 2026
13 checks passed
@fashxp
fashxp deleted the docs/restructure-data-importer branch July 22, 2026 07:44
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 22, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants