Skip to content

CLI commands

Every bin/console marketplace:* command, grouped by job. Backend-aware commands (marketplace:ping, marketplace:seller:list) work identically against Base's in-process backend and Remote's cluster backend.

Setup & identity (Base)

Command What it does
marketplace:local:schema:apply (Re)apply the declarative flyokai_* schema to Shopware MySQL. Idempotent — safe anytime.
marketplace:oauth:keypair:generate Generate / rotate the RSA keypair (var/marketplace/oauth.id_rsa{,.pub}) that signs portal JWTs.
marketplace:oauth:client:create Create / rotate the seller-portal OAuth client (password grant). Prints id + secret once.
marketplace:user:create Provision a flyokai_user (UUIDv7 PK, argon2id password). Options: --username --email --role --password.
marketplace:seller:create Create a seller bound to a flyokai_user (existing or new). Options: --username --email --password.

Operations (Base)

Command What it does
marketplace:ping Round-trip a ListSellers through the active backend. Reports backend class + seller count — the fastest health check.
marketplace:seller:list List sellers through the backend.
marketplace:statement:generate Generate / recompute statements over a closed-interval date range. See Finance.
marketplace:payout:execute Create + execute a payout against a closed statement.
marketplace:mail:smoke Send a test mail through the backend and Shopware's mailer.
marketplace:smoketest:checkout End-to-end checkout smoke test (cart → purchase order path).
flyokai:marketplace:backfill-variant-offers Backfill per-variant offers for configurable products (migration aid; offers are per-variant).

Remote cluster (Remote add-on)

Command What it does
marketplace:remote:bootstrap Persist cluster connection settings into Shopware system_config (interactive). Legacy alias: marketplace:flyokai:bootstrap.
marketplace:remote:cluster-config:init Seed db.connection.shopware + db.connection.cluster in the cluster's flyok.config.json; sync dataLocation. Idempotent. Options: --force, --dry-run, --active=shopware\|cluster.
marketplace:data:migrate:to-cluster Move the data plane Shopware → cluster MySQL, then flip dataLocation=cluster. Options: --drop-source, -y. See Data migration.
marketplace:data:migrate:to-shopware Reverse direction. Same options.

Recipes

First install (Base)

php bin/console plugin:install --activate FlyokaiMarketplace
php bin/console marketplace:oauth:client:create
php bin/console marketplace:user:create --username admin --email admin@example.com --role admin --password '…'
php bin/console marketplace:seller:create --username seller1 --email seller1@example.com --password '…'
php bin/console marketplace:ping

Month close

php bin/console marketplace:statement:generate --from 2026-05-01 --to 2026-05-31
php bin/console marketplace:payout:execute --statement <id>

Go remote, then move data to the cluster

php bin/console plugin:install --activate FlyokaiMarketplaceRemote
php bin/console marketplace:remote:bootstrap
php bin/console marketplace:remote:cluster-config:init
php bin/console marketplace:ping                       # confirms RemoteMarketplaceBackend
php bin/console marketplace:data:migrate:to-cluster    # resumable; safe to rerun

Rotate the portal signing key

php bin/console marketplace:oauth:keypair:generate
# existing portal JWTs become invalid → sellers re-authenticate

Health check first

When anything seems off, start with marketplace:ping. It tells you which backend is bound and whether it can reach its data — the first branch in almost every troubleshooting path.