When installing Pickware, you generally have the option to do so either via your Shopware Admin or via Composer. In this article, we show you the installation via Composer. You can find the installation of Pickware via the Shopware Admin in a separate article.
If you have previously installed the Pickware extensions via Composer, they must also be uninstalled via Composer. We also recommend installing Pickware ERP, WMS & POS via Composer if you previously installed the individual Pickware extensions via Composer.
Pickware ERP, WMS & POS
With Pickware ERP, WMS & POS, you get a single, central extension with all the functions of Pickware. You can get the extension via the Shopware Store.
If you want to switch from the individual Pickware extensions (ERP, ERP Pro, WMS, POS, DHL, GLS or Deutsche Post) to the comprehensive solution Pickware ERP, WMS & POS, you can find the instructions on how to proceed in this article.
Performing the installation
Add the following repositories to the composer.json file of your Shopware project:
"repositories": [
{
"type": "composer",
"url": "https://packages.shopware.com/",
"canonical": false
},
{
"type": "path",
"url": "pickware-plugins/*/vendor/pickware/*"
},
{
"type": "path",
"url": "pickware-plugins/*"
}
]
Under certain circumstances, the repository of the Shopware Community Store ("shopware-packages") may already be included. It's essential that this repository be added before the new path repositories and that the property "canonical": false is set.
Add an entry in the require section of the composer.json file of your Shopware project for each of the plugins you want to install. Replace the version (here "^2.0.0") from the following example with the current version of the extension.
Example:
"store.shopware.com/pickware": "^2.0.0"
The following identifier applies to the extension:
Extension |
|
Pickware ERP, WMS & POS |
|
Run the command
composer update pickware/* --with-dependencies.Then run
./bin/console plugin:refreshto display the available plugins and their names.Use the plugin name shown there to install the plugin:
./bin/console plugin:install Pickware --activate -c.
The plugin:refresh step is mandatory, since otherwise Shopware will not recognize the newly installed plugins if you try to install them right after the update.
Performing the update
If you want to update Pickware ERP, WMS & POS via Composer, follow these steps:
Run the command
composer update pickware/* --with-dependencies.Then run
./bin/console plugin:refresh.Update the plugin:
./bin/console plugin:update Pickware -n -c
Run this step after every composer update — even if no new version has been released for your plugin itself. Pickware plugins internally consist of several shared bundles. If a bundle receives a new version (because another Pickware plugin was updated), the Shopware Community Store makes this version available to all Composer installations. The new bundle code may contain database migrations that will not run without plugin:update. If these migrations are skipped, this can lead to SQL errors or crashes in the Shopware Admin.
Updating individual Pickware extensions
If you're still using our individual Pickware extensions (ERP, ERP Pro, WMS, POS, DHL, GLS or Deutsche Post), you can continue to update them via Composer.
All extensions installed via Composer must also be updated this way. If you want to switch from an installation/update via Admin to installation via Composer, please make sure to review the notes here.
Performing the update
Add the following repositories to the composer.json file of your Shopware project:
"repositories": [
{
"type": "composer",
"url": "https://packages.shopware.com/",
"canonical": false
},
{
"type": "path",
"url": "pickware-plugins/*/vendor/pickware/*"
},
{
"type": "path",
"url": "pickware-plugins/*"
}
]
Under certain circumstances, the repository of the Shopware Community Store ("shopware-packages") may already be included. It's essential that this repository be added before the new path repositories and that the property "canonical": false is set.
If you have subscribed to Pickware WMS or Pickware POS, you also need to download the zip files for the corresponding plugins from your Pickware account and unpack them into a dedicated
pickware-pluginsdirectory in your Shopware installation. This is necessary because these plugins are not provided via the Shopware Community Store.Important: The plugins Pickware WMS and Pickware POS must not be placed in the
custom/pluginsorcustom/static-pluginsdirectories, as this will cause problems during the update.
Add an entry in the require section of the composer.json file of your Shopware project for each of the plugins you want to install. Replace the version (here "^2.0.0" and "^1.6.3") from the following example with the current version of the extension.
Example:
"store.shopware.com/pickwareerpstarter": "^2.0.0",
"pickware/pickware-wms": "^1.6.3",
The following identifiers apply to the extensions:
Extension |
|
Pickware ERP |
|
Pickware ERP Pro |
|
Deutsche Post shipping |
|
DHL shipping |
|
GLS shipping |
|
Pickware WMS |
|
Pickware POS |
|
Run the command
composer update pickware/* --with-dependencies.Then run
./bin/console plugin:refreshto display the available plugins and their names.Then update your Pickware extensions. We recommend the collective command, which updates all Pickware plugins and their shared bundles at once:
./bin/console plugin:update Pickware -n -c
Alternatively, you can update a single plugin specifically by using the plugin name shown via plugin:refresh (e.g. ./bin/console plugin:update PickwareDhl -n -c). The plugin:refresh step is mandatory, since otherwise Shopware will not correctly recognize the updated plugins.
Example for Pickware ERP:
./bin/console plugin:update PickwareErpStarter -n -c
Run ./bin/console plugin:update Pickware -n -c after every composer update — even if no new version has been released for your plugin itself. Pickware plugins internally consist of several shared bundles. If a bundle receives a new version (for example, because another Pickware plugin was updated), the Shopware Community Store makes this version available to all Composer installations — regardless of whether your specific plugin (e.g. DHL, GLS or Deutsche Post) has a new version. The new bundle code may contain database migrations that will not run without plugin:update. If these migrations are skipped, this can lead to SQL errors or crashes in the Shopware Admin. Since you don't need to know which plugin brings which bundle, the collective command ./bin/console plugin:update Pickware -n -c is the safe choice here.
Troubleshooting
The packages required for installation are each delivered with the extension in the vendor directory. For Composer to find these packages, the following path repository must be defined in your composer.json file.
"repositories": [
{
"type": "path",
"url": "pickware-plugins/*/vendor/pickware/*"
}
]
If this repository is missing, running composer install will result in an error similar to this:
pickware/pickware-erp-starter 1.1.0 requires
pickware/shopware-plugins-dal-bundle ^2.0.0 -> no matching package found.
In some cases, dependencies of Pickware POS or Pickware WMS are included that are not available in the Shopware Community Store. This can result in the following or a similar error:
Problem 1 - Root composer.json requires pickware/pickware-wms ^2.1.0 -> satisfiable by pickware/pickware-wms[2.1.0]. - pickware/pickware-wms 2.1.0 requires pickware/document-bundle ^2.4.16 -> satisfiable by pickware/document-bundle[2.4.16] from path repo (pickware-plugins/*/vendor/pickware/*) but pickware/document-bundle[2.0.1, ..., 2.4.15.4] from composer repo (https://packages.shopware.com/) has higher repository priority. The packages from the higher priority repository do not match your constraint and are therefore not installable. That repository is canonical so the lower priority repo's packages are not installable. See https://getcomposer.org/repoprio for details and assistance.
This happens when the repository for the Shopware Community Store ("shopware-packages") is not placed before the path repository and/or the property "canonical": false is not set for this repository.
Error message Cannot redeclare Franzose\DoctrineBulkInsert\sql() when installing extensions
If you receive the error message Cannot redeclare Franzose\DoctrineBulkInsert\sql() when installing an extension, this may be because you're currently trying to install an extension via the Shopware Admin, even though you've already installed extensions via Composer before.
Fatal error: Cannot redeclare Franzose\DoctrineBulkInsert\sql() (previously declared in /var/www/html/vendor/franzose/doctrine-bulk-insert/src/functions.php:9) in /var/www/html/pickware-plugins/PickwarePos/vendor/franzose/doctrine-bulk-insert/src/functions.php on line 20Symfony\Component\ErrorHandler\Error\FatalError^ {#63#message: "Compile Error: Cannot redeclare Franzose\DoctrineBulkInsert\sql() (previously declared in /var/www/html/vendor/franzose/doctrine-bulk-insert/src/functions.php:9)"Overall, you need to choose one approach for installing your extensions: installation via Composer or installation via Admin. To resolve this issue, the extension in question must therefore also be installed via Composer.
We recommend the following steps:
Make sure that all Pickware plugins are listed in the
requiresection of thecomposer.jsonfileUse the console command
bin/console plugin:refreshto check that all plugins are installedCheck in the database that the value
managed_by_composeris set to1 (True)for the entries of all Pickware plugins in theplugintable.
Plugins are removed from composer.json during the update
This happens when the plugins are located in the custom directory or a subdirectory of it. Pickware's plugins should be located in their own directory that is not under custom, such as <installation-root>/shopware-plugins.
As of Shopware version 6.6.10.4, it can also happen that Pickware plugins are removed from composer.json when running plugin:update or plugin:refresh if they are located in the custom/ directory.
What should you keep in mind when switching from installation via Admin to installation via Composer?
In this case, the plugin paths must be corrected in the path column of the plugin database table:
For Pickware POS:
vendor/pickware/pickware-posFor Pickware WMS:
vendor/pickware/pickware-wms
Table not found or assets not updated after update
If errors such as Table '...' doesn't exist occur after an update, or changes don't take effect despite clearing the cache, the cause may be a composer install run without post-install scripts (for example, due to a --no-scripts flag in the deployment). In this case, Shopware routines such as database migrations and asset compilation are not executed automatically.
In this case, run the following commands manually:
composer run-script post-install-cmdbin/console assets:installbin/console system:update:finish
Recommendation: Add bin/console system:update:finish as a fixed step in your deployment process to make sure that migrations and assets are executed correctly after every update.
Clearing the cache before an update
Clear the Shopware cache immediately before an update to avoid outdated cache data interfering with the update process. Otherwise, composer install or composer update may not run through all required steps cleanly.
To do this, run the following command before the update:
bin/console cache:clear
SQL errors or crashes in the Admin after composer update without a new plugin release
If you see errors such as Table '...' doesn't exist or crashes in the Shopware Admin after a composer update, even though no new release has been published for your plugin, the cause is likely an updated bundle version.
Pickware plugins internally share several bundles. If a bundle is updated as part of another Pickware plugin release, the Shopware Community Store makes this new bundle version available via Composer — regardless of whether your specific plugin itself has received a new version. So after a composer update, new bundle code may be active while the associated database migrations have not yet been run.
In this case, run:
bin/console plugin:update Pickware -n -c
This command runs all pending migrations of all Pickware bundles, regardless of whether a new version is available for the respective plugin itself. Recommendation: Add bin/console plugin:update Pickware -n -c as a fixed step after every composer update in your deployment process.
