Skip to content

Getting started

This page takes you from a fresh Shopware install to your first successful import.

Requirements

Requirement Notes
Shopware ~6.6 or ~6.7 (the plugin declares shopware/core: ~6.6 \|\| ~6.7)
PHP The version your Shopware runs on; the async media path uses ext-mysqli
MySQL / MariaDB A reachable database; the async driver pools its own connections
Messenger worker Needed for queued runs and queued thumbnails (see below)

The plugin bundles the Flyokai async stack it depends on (flyokai/amp-data-pipeline, flyokai/amp-csv-reader, flyokai/data-mate, laminas/laminas-db, AMPHP, Revolt). In the embedded dev setup these resolve through the monorepo; Store-distributed builds ship their own vendor/. The plugin registers those namespaces itself at boot — see FlyokaiFujinShuttle::patchAutoloader().

Install

bin/console plugin:refresh
bin/console plugin:install --activate FlyokaiFujinShuttle
bin/console cache:clear

Install/activate creates the four plugin tables (fujin_profile, fujin_profile_column, fujin_job, fujin_job_log — see Database schema) and seeds the configuration defaults into system_config.

Run the messenger worker

Imports larger than the synchronous threshold (default 1000 rows) are dispatched to Symfony Messenger, and the default thumbnail mode (queued) also goes through the queue. Make sure a worker is running:

bin/console messenger:consume async

Your first import (admin)

  1. Go to Catalog ▸ Fujin Shuttle ▸ Import / Export profiles and click Create profile.
  2. Set Name, Type = product, Transfer mode = import.
  3. In Template & example, click Download example to get a valid CSV with sample rows. Edit it (or replace it with your own data using the same headers).
  4. Upload the CSV. The detected columns appear in a table.
  5. Set options if needed (batch size, reindex mode, parent category) and Save.
  6. Press Run. A live status view shows progress, per-status row counts and a log; a Stop button cancels cooperatively at the next batch boundary.

→ Full UI walkthrough: Admin UI & profiles.

Your first import (CLI)

Generate a template, fill it in, and run:

# Ad-hoc run, no job tracking — fastest path for scripting
bin/console fujin:shuttle:run products.csv --type=product --reindex=none

What the options mean — and the other three commands — are in CLI commands. The most common ones:

Option Default Meaning
--type product One of the seven data types
--dry-run off Resolve IDs, write nothing
--batch-size 500 Rows per bulk INSERT
--reindex auto auto | full | none

--reindex=none for big cold loads

For large all-new imports, skip reindexing during the run and rebuild once afterwards (bin/console dal:refresh:index). This is the configuration the benchmarks use.

Verify the result

After an import:

# Inspect a tracked job (admin / run-profile runs)
#   status, processed, progress, and the per-row log are stored in fujin_job / fujin_job_log
# Or just check the catalogue:
bin/console dal:refresh:index   # if you imported with --reindex=none

Products should appear in Catalog ▸ Products. If something is off, the per-row log (admin run view, or fujin_job_log) records the row number, action and message for every skipped or failed row. See Troubleshooting.

Where to go next