Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
e0d0cd5
feat: add migration logging required fields (#38)
larskemper Aug 18, 2025
d2468fd
refactor: add migration logging optional fields (#40)
larskemper Aug 21, 2025
638b84d
refactor!: migration connection usage (#43)
larskemper Aug 26, 2025
d077e38
fix: phpstan log array types (#47)
larskemper Aug 27, 2025
5d495b8
feat: fill logs with meaningful data src/Migration (#46)
jozsefdamokos Aug 27, 2025
4a5b659
feat: add iterative log building helper (#48)
larskemper Aug 28, 2025
b50abbf
feat: fill logs with meaningful data (#49)
larskemper Aug 29, 2025
cb0f6b1
docs: update changelog
larskemper Sep 1, 2025
8646a89
feat: refactor connection credentials page (#42)
jozsefdamokos Sep 2, 2025
62cb5dd
refactor!: convert to ts (#39)
larskemper Sep 2, 2025
54d4550
fix: phpstan for feature branch (#52)
larskemper Sep 5, 2025
8536708
feat: add migration fixes table (#56)
larskemper Sep 15, 2025
f69773c
feat: add migration validation of converted data (#51)
larskemper Sep 17, 2025
d5d1cdc
refactor: cleanup wording (#59)
larskemper Sep 22, 2025
19f4267
chore: drop migration cli commands (#60)
larskemper Sep 22, 2025
b93a071
fix: adjust profile icon paths (#61)
vintagesucks Sep 22, 2025
976d4b4
refactor: use meteor tokens (#58)
larskemper Sep 23, 2025
fc4372d
fix: adjust log file generation (#64)
larskemper Oct 2, 2025
4ed6c64
refactor: improve ui/ux (#68)
larskemper Oct 6, 2025
001ed93
12367/add entity classes (#76)
DennisGarding Oct 24, 2025
5be00ca
feat: checksum and reset via mq (#57)
larskemper Oct 29, 2025
6deb24e
Merge remote-tracking branch 'origin/trunk' into feature/migration-lo…
larskemper Oct 29, 2025
85bccaa
fix: phpstan
larskemper Oct 29, 2025
271b787
fix: phpunit
larskemper Oct 30, 2025
35709d7
feat: apply fixes prototype (#63)
DennisGarding Oct 31, 2025
63dbef2
feat: split message queue process (#74)
jozsefdamokos Oct 31, 2025
7ce1a74
feat: add acl constraints (#77)
larskemper Nov 3, 2025
d6af580
13248/change swag migration fix table (#81)
DennisGarding Nov 6, 2025
8a16844
Chore: 13247/change table swag migration logging (#80)
DennisGarding Nov 7, 2025
ac67406
refactor: change swag migration mapping (#82)
DennisGarding Nov 10, 2025
222c0bd
refactor: remove main mapping id from migration fix (#83)
larskemper Nov 10, 2025
3356c13
ci: add check for conventional commits (#84)
larskemper Nov 10, 2025
6c36b6d
refactor: re-group migrations (#86)
larskemper Nov 10, 2025
7f5da1d
refactor: load fixes (#88)
DennisGarding Nov 17, 2025
4409572
refactor: use xxh hash (#85)
larskemper Nov 18, 2025
a05f7e7
feat: add error resolution ui (#53)
larskemper Nov 28, 2025
8f780ff
chore: check naming consistency across error resolution (#94)
larskemper Nov 28, 2025
de33168
chore: fix package de sync (#95)
larskemper Dec 1, 2025
5d4ec50
refactor: remove validation from converter (#79)
DennisGarding Dec 2, 2025
134e9eb
test: error resolution ui (#90)
larskemper Dec 8, 2025
14f548b
fix: change connection modal (#98)
vintagesucks Dec 9, 2025
aba7961
fix: typos in error resolution "no option available" banner (#101)
vintagesucks Dec 9, 2025
0b0a124
refactor: unify public api (#100)
larskemper Dec 15, 2025
1cea903
refactor: use domain exception (#102)
larskemper Dec 17, 2025
a288248
feat: prevent multiple connections to the same system (#93)
larskemper Dec 17, 2025
590c900
feat: prepare ui for different resolving types (#108)
larskemper Dec 24, 2025
538ae17
fix: abort mq pickup (#106)
larskemper Dec 24, 2025
7da8e5c
docs: changelog and upgrade (#103)
larskemper Jan 6, 2026
88c2a58
feat: add reset of single fixes (#109)
larskemper Jan 6, 2026
3999eb6
fix: currency conversion (#111)
jozsefdamokos Jan 8, 2026
8cf9795
fix: use item-specific tax in order conversion (#114)
vintagesucks Jan 14, 2026
4fc04a4
Merge branch 'trunk' of github.com:shopware/SwagMigrationAssistant in…
MalteJanz Jan 22, 2026
856c558
fix: try to fix phpunit tests
MalteJanz Jan 22, 2026
abde712
prettier
vintagesucks Jan 22, 2026
c29b1e0
fix: DataProviderControllerTest
jozsefdamokos Jan 22, 2026
9e168a1
Merge branch 'trunk' into feature/migration-logging-refactor
vintagesucks Jan 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
10 changes: 6 additions & 4 deletions .github/workflows/admin.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ on:
workflow_call:
Copy link
Member Author

@larskemper larskemper Nov 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

todo before merge: check all commit message for conventional commit and don't squash merge


jobs:
eslint:
name: ESLint
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: shopware/github-actions/setup-extension@main
Expand All @@ -33,7 +33,9 @@ jobs:
}
- run: |
composer -d custom/plugins/${{ github.event.repository.name }} run admin:install
composer -d custom/plugins/${{ github.event.repository.name }} run admin:lint
composer -d custom/plugins/${{ github.event.repository.name }} run lint:admin
composer -d custom/plugins/${{ github.event.repository.name }} run format:admin
composer -d custom/plugins/${{ github.event.repository.name }} run format:md

stylelint:
name: Stylelint
Expand All @@ -55,7 +57,7 @@ jobs:
}
- run: |
composer -d custom/plugins/${{ github.event.repository.name }} run admin:install
composer -d custom/plugins/${{ github.event.repository.name }} run admin:lint:scss
composer -d custom/plugins/${{ github.event.repository.name }} run lint:admin:scss

jest:
name: Jest
Expand Down
33 changes: 33 additions & 0 deletions .github/workflows/check-pr-title.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Check PR title

on:
pull_request:
types:
- opened
- reopened
- edited
- synchronize

permissions:
pull-requests: read

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # 6.1.1
with:
types: |
feat
fix
chore
docs
style
refactor
perf
test
build
ci
revert
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4 changes: 2 additions & 2 deletions .github/workflows/integration.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:
}
- name: Import SW5 TestData DB
working-directory: custom/plugins/${{ github.event.repository.name }}/tests
run: mysql -uroot < testData/sw55.sql
run: mysql -uroot < _fixtures/database/sw55.sql
- name: Run PHPUnit
working-directory: custom/plugins/${{ github.event.repository.name }}
run: php -d pcov.enabled=1 -d pcov.directory=${PWD} -d pcov.exclude='~(vendor|tests|node_modules)~' ${GITHUB_WORKSPACE}/vendor/bin/phpunit --configuration phpunit.xml.dist
Expand Down Expand Up @@ -118,7 +118,7 @@ jobs:
run: |
composer run build:js:admin
cd custom/plugins/${{ github.event.repository.name }}/tests
mysql -uroot < testData/sw55.sql
mysql -uroot < _fixtures/database/sw55.sql
- name: Install playwright
working-directory: custom/plugins/${{ github.event.repository.name }}/tests/acceptance
run: |
Expand Down
37 changes: 27 additions & 10 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,15 +1,32 @@
.idea
.vscode
coverage/
.phpunit.cache
.phpunit.result.cache
vendor
node_modules
phpstan.neon
# ide
.idea/
.vscode/

# os
.DS_Store

# node
node_modules/
*.hot-update.js
/var/

# php
vendor/
phpstan.neon
composer.lock
src/Resources/public/administration/
.phpunit.cache
.phpunit.result.cache

# tests
coverage/

# build
src/Resources/public/static/
src/Resources/public/administration/
src/Resources/app/administration/.tmp

# runtime
/var/
.env

# plugin
/migration_assistant.cache
5 changes: 5 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
**/node_modules
**/static
**/.tmp
**/public/
**/coverage/
10 changes: 10 additions & 0 deletions .prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"singleQuote": true,
"tabWidth": 4,
"printWidth": 125,
"trailingComma": "all",
"multilineArraysWrapThreshold": 1,
"plugins": [
"prettier-plugin-multiline-arrays"
]
}
169 changes: 125 additions & 44 deletions CHANGELOG.md

Large diffs are not rendered by default.

176 changes: 129 additions & 47 deletions CHANGELOG_de-DE.md

Large diffs are not rendered by default.

118 changes: 100 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,45 +1,127 @@
# Shopware Migration Assistant (SwagMigrationAssistant)
# SwagMigrationAssistant

## License
The Shopware Migration Assistant establishes a connection between a data source and Shopware 6 and guides you step by step through the migration process.

The MIT License (MIT). Please see [License File](LICENSE) for more information.
It supports migrating numerous datasets (products, manufacturers, customers, …) and updating them at any time. Before a migration starts, the assistant runs a data check and supports creating “mappings” to resolve missing/unassignable data (for example: assign missing manufacturers to a default manufacturer) to avoid data loss.

## Description
## Overview

The Shopware Migration Assistant establishes a connection between a data source (e.g. Shopware 5 shop) and Shopware 6 and guides you step by step through the migration process.
- [Documentation](#documentation)
- [Shopware 5](#shopware-5-migration-connector)
- [Requirements](#requirements)
- [Installation](#installation-shopware-6-project)
- [Developer setup](#developer-setup)
- [Common workflows](#common-workflows)
- [Release notes / upgrades](#release-notes--upgrades)
- [License](#license)

You can migrate numerous datasets – e.g. products, manufacturers, customers, etc. – from your existing shop system to Shopware 6 and update them at any time.
## Documentation

The assistant also makes it possible to connect two systems in order to make the transition as easy as possible.
- **User documentation**: [Shopware Migration docs](https://docs.shopware.com/en/migration-en)
- **Developer documentation**: [Migration Assistant developer docs](https://developer.shopware.com/docs/products/extensions/migration-assistant/)

## Shopware 5: Migration Connector

When migrating from Shopware 5, you can migrate locally or connect via the “Migration Connector” plugin from the Shopware Store:

Once the connection has been established, it saves automatically so that it can be accessed at any time. After the first complete migration, individual datasets can also be migrated or updated as needed.
- **Migration Connector**: [Shopware Store listing](https://store.shopware.com/de/swag226607479310f/migration-connector.html)

The connector provides API endpoints so Shopware 6 can establish a secure connection to the Shopware 5 shop. Keep it enabled as long as you need updates/delta migrations.

## Requirements

Before the migration takes place, the assistant performs a data check to determine missing or unassignable datasets. Within the scope of this check it may be necessary to create so-called “mapping”, which replaces any missing data with an assignment (e.g. missing manufacturer data automatically reverts to the default manufacturer) – this ensures you can quickly migrate without losing any data.
- **Shopware**: `shopware/core` (see version here [`composer.json`](composer.json))
- **Node.js / npm**: required for administration and JS tooling (lint/unit/acceptance)
- **MySQL client**: required for importing Shopware 5 fixture data (optional)

## Installation (Shopware 6 project)

Expected path (relative to your Shopware 6 project root) for the plugin:

## Info for Shopware 5 users:
`custom/plugins/SwagMigrationAssistant`

In migrating your Shopware 5 shop, you can either perform the migration locally or use the “Migration Connector” plugin [Link to the plugin](https://store.shopware.com/de/swag226607479310f/migration-connector.html).
From the shopware root directory:

```bash
bin/console plugin:refresh
bin/console plugin:install -a -c SwagMigrationAssistant
```

Alternatively, use the provided shortcut:

The Migration Connector provides API endpoints that allow Shopware 6 to establish a secure data connection with the active Shopware 5 shop. As long as you are using Shopware 6, you should leave the plugin enabled. This is the only way to update the data at any time.
```bash
composer setup
```

## Developer setup

- **Install JS dependencies** (administration + Jest + Playwright project):

## Get started with the Migration Assistant:
```bash
composer npm:init
```

- **Install git pre-commit hook** (optional):

```bash
./bin/setup.sh
```

- Download the Shopware Migration Assistant from the Community Store
- Activate the plugin in your Shopware 6 installation – this can be done in the Plugin Manager under “Purchases”. Alternatively, you can use the Plugin Manager to upload the plugin ZIP file.
- The Migration Assistant will then guide you through the migration process.
## Common workflows

## Documentation
### Linting & formatting

Run everything (PHP + admin):

```bash
composer lint
```

Run individual parts:

```bash
composer ecs
composer phpstan
composer phpunit
composer admin:lint # eslint
composer admin:format # prettier
```

### Tests

- **PHPUnit**:

```bash
composer phpunit
```

- **Administration unit tests (Jest)**:

```bash
composer admin:unit
```

- **Acceptance tests (Playwright)**:

```bash
composer admin:acceptance
```

More details (including Playwright install steps) can be found in the [acceptance tests README](tests/acceptance/README.md).

### Import Shopware 5 fixture database (optional)

This imports `tests/_fixtures/database/sw55.sql` into the database configured in your Shopware root `.env` via `DATABASE_URL`.

```bash
composer install5db
```

## Release notes / upgrades

- **Changelog**: [`CHANGELOG.md`](CHANGELOG.md)
- **Breaking changes**: [`UPGRADE.md`](UPGRADE.md)

## License

If you need further information. You can have a look at our [user documentation](https://docs.shopware.com/en/migration-en) and our [developer documentation](https://developer.shopware.com/docs/products/extensions/migration-assistant/)
`MIT` See [`LICENSE`](LICENSE).
Loading
Loading