Skip to main content
Version: 2026.2

Basics

Create a File Export configuration in Pimcore Studio under Automation & Integration > Data Hub Configuration, then select the File Export adapter type. The configuration is split into these tabs: General, Schema, Workspaces, Delivery Destination, Trigger & Execution, Logs, and Permissions.

General

General tabGeneral tabGeneral tab

  • Active: enable or disable the configuration.
  • Type and Name: set when the configuration is created and shown read-only here.
  • Description: free text describing the configuration.
  • Group: groups configurations in the Datahub tree on the left.

Schema

Pick the Data Object Class to export, then open Configure Columns to choose which fields are exported.

Configure columnsConfigure columnsConfigure columns

  • Add fields from the Fields to add tree, the same field selection used by the Pimcore Studio data object grid.
  • Optionally define an Image Thumbnail or Video Thumbnail when exporting assets. Leave them at -- none / original -- to export the original asset path.
  • Column names must be unique, and must be valid for the target format when exporting to JSON or XML.
  • To rename a field in the output, add an advanced column, set its Title to the name you want, and add the original field under its Source fields. Transformers can additionally reshape the value.
warning

Whenever the exporter has to interpret previously exported data, it identifies rows by the id column, so the object ID has to be exported under the column name id. This applies to the Update Current File conflict strategy, the only strategy that merges new rows into the file generated previously instead of rebuilding it. Overwrite deletes the previous file and Rename (append suffix) picks a new name before the merge step runs, so under those strategies no existing rows are read back.

Workspaces

Workspaces tabWorkspaces tabWorkspaces tab

  • Objects - restrict the export to data object subtrees. Add a row and drag the folder or object into the Path cell. With no row, every object of the selected class is exported.
  • Read - the per-row checkbox stored with the workspace entry. The exporter itself does not evaluate it; the export query uses the paths only.
  • Custom Export Service - the service that runs the export. The default is pimcore.datahub.fileExport.exporter.file. Register your own as public, non-shared and tagged:
services:
app.datahub.my-exporter:
class: App\DataHubFileExport\Exporter\MyFile
public: true
shared: false
tags:
- { name: "pimcore.datahub.fileExport.exporter" }

See Customize and Extend for the implementation.

note

Paths are matched as a plain SQL LIKE '<path>%' prefix, without a folder boundary. An entry for /Product Data therefore also matches /Product Data Archive. Multiple entries are combined with OR.

To filter further, listen to the IsValidExportItemEvent (see Events) or override getQueryCondition() in a custom exporter service.

Delivery Destination

Delivery Destination tabDelivery Destination tabDelivery Destination tab

  • File Type: the export format to use. The dropdown lists every registered exporter type, so CSV, XML, JSON and any custom type you add. CSV reveals an extra single-character Delimiter field.
  • Date Format: the Carbon date format used to render the date that fills the %s placeholder of Filename, for example Y-m-d.
  • Filename: the name of the target file. Use %s as placeholder to insert the date configured in Date Format.
  • Conflict Strategy:
    • Overwrite: writes a new file containing only the data of the current run. Take care when combining this with a save hook, since each save overwrites the previous file.
    • Update Current File: adds all data to the same file. Existing data from the object is added or updated. This strategy requires the id field in the schema.
    • Rename (append suffix): if a file exists, a new one is created with a numeric suffix. The new file contains only new data.
  • Delivery Type: where the data is delivered. Each type reveals its own settings below the dropdown.
    • Local Directory: saves the data to a local directory.

    • Download: serves the file at /pimcore-datahub-fileexport/download/<configuration-name>, guarded by the Access Token:

      curl -H "Authorization: Bearer <access-token>" \
      https://your-host/pimcore-datahub-fileexport/download/car-catalog-export

      A signed-in Pimcore user holding plugin_datahub_config may download without the token.

    • SFTP: uploads the data to an SFTP server.

    • HTTP: sends the data to an HTTP endpoint.

    • E-Mail: sends the data to one or more email addresses.

    • Asset: creates a Pimcore asset with the data in the specified folder.

Trigger & Execution

Trigger &amp; Execution tabTrigger &amp; Execution tabTrigger &amp; Execution tab

The Save Hook defines what happens when a data object is saved:

  • Disabled: saving does nothing. The export runs only through a cron definition or a manual run.
  • Full Export on Save: saving the object writes its data directly to the target destination. Use this only for simple objects without inheritance, because of the save performance impact.
  • Queue Only on Save: saving the object creates a queue item, and the export runs asynchronously later. This keeps saving fast, since the heavy work happens in the background.

With Full Export on Save the exporter writes the saved object. If the class allows inheritance, every object of that class below the saved one is written as well.

Both save hooks skip auto-saves and version-only saves, and they only react to configurations that are active and bound to the same data object class.

Two cron fields, Cron (Full Export) and Cron (Queue Only), schedule recurring exports. The Manual Export section runs an export immediately with Run Full Export or Run Queue Only, shows the current export status, and offers Cancel Export while a run is in progress.

The toolbar button Save, reset and clear queue saves the configuration and empties its queue. Use it after changes that invalidate queued items, for example a new schema.

For details about the execution modes, cron setup and CLI command, see Export Setup.

Logs

The Logs tab lists the application log entries of this configuration, written under the component FileExport :: <configuration-name>. Check it when an export produces no file or an unexpected one.

Permissions

The Permissions tab grants read, update and delete on this single configuration per user and role. Leaving it empty falls back to the plugin_datahub_adapter_fileExport permission; filling it in overrides that permission entirely. See Installation for the full resolution order.

Storage

By default the bundle writes the temporary file to var/tmp/data-hub/file-export/ and the output file to var/data-hub/file-export/, both below the project root.

Customize the storage type and location with a Flysystem configuration in config.yaml:

flysystem:
storages:
pimcore.dataHubFileExport.storage:
adapter: 'local'
visibility: private
options:
directory: '%kernel.project_dir%/var/data-hub/file-export/'

pimcore.dataHubFileExport.temp.storage:
adapter: 'local'
visibility: private
options:
directory: '%kernel.project_dir%/var/tmp/data-hub/file-export/'
warning

With more than one application server, point both storages at a shared directory.

Next Steps