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:
Your first import (admin)¶
- Go to Catalog ▸ Fujin Shuttle ▸ Import / Export profiles and click Create profile.
- Set Name, Type =
product, Transfer mode =import. - 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).
- Upload the CSV. The detected columns appear in a table.
- Set options if needed (batch size, reindex mode, parent category) and Save.
- 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¶
- Understand the moving parts → Concepts & architecture
- Build a correct CSV → CSV format & columns
- Tune throughput → Performance & tuning