Configuration¶
Two layers of settings:
- Global config — plugin defaults, edited under Settings ▸ Extensions ▸ Fujin Shuttle
(config domain
FlyokaiFujinShuttle.config). - Per-run options — set on an import profile or as CLI flags; these override the global defaults for that run.
Global configuration¶
Defined in Resources/config/config.xml, in two cards.
Card — Fujin Shuttle¶
| Field | Type | Default | Description |
|---|---|---|---|
dbDriver |
select | async |
Connection pool: async (non-blocking pooled mysqli — faster on networked DBs) or sync (Shopware PDO). |
concurrency |
int | 8 |
Max batches in flight against the pool (async driver; independent profiles only). |
syncRowThreshold |
int | 1000 |
Imports up to this many rows run synchronously in the request; larger imports are queued to the messenger worker. |
Card — Import defaults¶
| Field | Type | Default | Description |
|---|---|---|---|
autoCreateCategories |
bool | true |
Create missing categories referenced by a full category path. |
autoCreateCustomFields |
bool | true |
Create missing custom fields (under the fujin_import set) referenced by custom_<name> columns. |
autoCreatePropertyOptions |
bool | true |
Create missing property groups/options referenced by properties / variant_options. |
autoCreateManufacturers |
bool | false |
Reserved — not yet implemented. Missing manufacturers are skipped with a warning regardless. |
autoCreateVariantParents |
bool | false |
When a variant references an unknown parent_product_number, create a stub parent instead of skipping the row. |
categoryPathDelimiter |
text | > |
Separator between segments of a category path (Home > Furniture > Chairs). |
listDelimiter |
text | \| |
Separator between entries in multi-value columns (categories, visibility, properties, media, advanced_prices). |
mediaDownload |
bool | true |
Download/import images referenced by the media column and link them. |
mediaImportMode |
select | filesaver |
Media strategy: filesaver | raw | worker. See Media import. |
mediaThumbnails |
select | queued |
Thumbnail generation: queued | sync | none. See Media import. |
mediaWorkers |
int | 8 |
Parallel subprocesses for the worker media strategy. |
Defaults are backfilled on update
On install/activate Shopware seeds these defaults into system_config. The plugin also
backfills on update (without overwriting values you've set), so config keys added in a
newer release appear in the form automatically.
Per-run options & overrides¶
A run takes its settings from the global config, then applies any profile option or CLI flag on top. The common overrides:
| Setting | CLI flag (fujin:shuttle:run) |
Profile option | Global default |
|---|---|---|---|
| Batch size | --batch-size |
batch size | 500 (CLI default) |
| Concurrency | --concurrency |
concurrency | concurrency (8) |
| Reindex mode | --reindex |
reindex mode | auto (CLI default) |
| Media strategy | --media-mode |
— | mediaImportMode |
| Media workers | --media-workers |
— | mediaWorkers |
| Parent category | --parent-category |
parent category | storefront root |
| Dry run | --dry-run |
dry run | off |
Reindex modes¶
| Mode | Behaviour |
|---|---|
auto |
Reindex the touched products/entities after the run (default). |
full |
Trigger a full reindex. |
none |
Skip reindexing — run bin/console dal:refresh:index yourself afterwards. Best for large cold loads. |
Synchronous vs queued¶
syncRowThreshold decides whether an admin-triggered import runs inline or is queued:
- ≤ threshold → runs in the HTTP request, returns final stats. (Exports always run inline.)
- > threshold → dispatches a
RunProfileMessage; amessenger:consume asyncworker does the work while the admin polls job status.
Raise the threshold if you want larger imports to stay synchronous; lower it to push more work onto the worker. See Admin UI → sync vs queued.