Probleme mit Migration - Bestellungen fehlen

Hallo Gemeinde,
ich versuche gerade einen Shopware 5 Shop auf 6 mit dem Migrationtool zu migrieren.

Kunden und Produkte haben geklappt, bei den Bestellungen gibt es Probleme.

Das Tool hat knapp 2100 Bestellungen von 2009 - 2016 übernommen - danach ist allerdings Ende. Von 2016 bis heute fehlen knapp 4500 Bestellungen. Ich habe sowohl versucht über API, als auch über Datenbank zu migrieren. Im Wesentlichen habe ich 4 Fehler in der Log, die dann massenhaft wieder auftauchen.

Fehler 1:

[warning] SWAG_MIGRATION_PAYMENT_METHOD_ENTITY_UNKNOWN
Cannot find payment_method
The customer entity with the source id "11" cannot find the depended payment_method entity with the source id "5".

[warning] SWAG_MIGRATION_PAYMENT_METHOD_ENTITY_UNKNOWN
Cannot find payment_method
The customer entity with the source id "14" cannot find the depended payment_method entity with the source id "5".

[warning] SWAG_MIGRATION_PAYMENT_METHOD_ENTITY_UNKNOWN
Cannot find payment_method
The customer entity with the source id "13" cannot find the depended payment_method entity with the source id "5".

Fehler 2:

[warning] SWAG_MIGRATION_SALUTATION_ENTITY_UNKNOWN
Cannot find salutation
The order entity with the source id "639" cannot find the depended salutation entity with the source id "mr".

[warning] SWAG_MIGRATION_SALUTATION_ENTITY_UNKNOWN
Cannot find salutation
The order entity with the source id "644" cannot find the depended salutation entity with the source id "mr".

[warning] SWAG_MIGRATION_SALUTATION_ENTITY_UNKNOWN
Cannot find salutation
The order entity with the source id "642" cannot find the depended salutation entity with the source id "mr".

[warning] SWAG_MIGRATION_SALUTATION_ENTITY_UNKNOWN
Cannot find salutation
The order entity with the source id "641" cannot find the depended salutation entity with the source id "mr".

Fehler: 3

[warning] SWAG_MIGRATION__SHOPWARE_ASSOCIATION_REQUIRED_MISSING_ORDER
Associated order not found
The order with the source id "1903" can not be found but is required for order_document.

[warning] SWAG_MIGRATION__SHOPWARE_ASSOCIATION_REQUIRED_MISSING_ORDER
Associated order not found
The order with the source id "1904" can not be found but is required for order_document.

[warning] SWAG_MIGRATION__SHOPWARE_ASSOCIATION_REQUIRED_MISSING_ORDER
Associated order not found
The order with the source id "1905" can not be found but is required for order_document.

[warning] SWAG_MIGRATION__SHOPWARE_ASSOCIATION_REQUIRED_MISSING_ORDER
Associated order not found
The order with the source id "1906" can not be found but is required for order_document.

Fehler 4:

[error] SWAG_MIGRATION_RUN_EXCEPTION
An exception occurred
Entity: order_document, sourceId: 01906d5bc13d71ec9c3920211554e4cb
An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`d040ca65`.`document`, CONSTRAINT `fk.document.order_id` FOREIGN KEY (`order_id`, `order_version_id`) REFERENCES `order` (`id`, `version_id`) ON UPDATE CASCADE)

[error] SWAG_MIGRATION_RUN_EXCEPTION
An exception occurred
Entity: order_document, sourceId: 01906d5bc13d71ec9c3920211578f492
An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`d040ca65`.`document`, CONSTRAINT `fk.document.order_id` FOREIGN KEY (`order_id`, `order_version_id`) REFERENCES `order` (`id`, `version_id`) ON UPDATE CASCADE)

[error] SWAG_MIGRATION_RUN_EXCEPTION
An exception occurred
Entity: order_document, sourceId: 01906d5bc13d71ec9c39202115e847f0
An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`d040ca65`.`document`, CONSTRAINT `fk.document.order_id` FOREIGN KEY (`order_id`, `order_version_id`) REFERENCES `order` (`id`, `version_id`) ON UPDATE CASCADE)

[error] SWAG_MIGRATION_RUN_EXCEPTION
An exception occurred
Entity: order_document, sourceId: 01906d5bc13d71ec9c392021160ef9a4
An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`d040ca65`.`document`, CONSTRAINT `fk.document.order_id` FOREIGN KEY (`order_id`, `order_version_id`) REFERENCES `order` (`id`, `version_id`) ON UPDATE CASCADE)

Ich schließe aus einigen Meldungen, dass es wohl Probleme mit den Formularen gibt. Außerdem mit der Anrede „Mr.“ und mit den „Zahlungsmethoden“. Ich weiss aber nicht wo ich jetzt ansetzen soll. Bei der Migration hat er bei „Mr.“ in der Anrede keine Probleme gefunden. Auch die Zahlungsmethoden kann ich recht einfach zuordnen. Der Quellshop ist eigentlich so gut wie Shopware Standard - bis auf die Tatsache, dass Custom Products im Einsatz ist. Auch bei den Zahlungsmöglichkeiten wurden nur Vorkasse und das Standard Rechnung verwendet.

Ich würde mich über jeglichen Hinweis freuen.
kweb

Zu Fehler 1 und 2:
Normalerweise müssen diese Zuordnung vor der Migration gesetzt werden, diese werden in der Datenbank unter swag_migration_connection->premapping gespeichert. Schau mal da nach. Wenn die Mappings fehlen, kannst du diese dort manuell eintragen. Ist auch schon vorgekommen, dass das Premapping nicht gespeichert wurde.

Fehler 3 und 4 sind dann aller Wahrscheinlichkeit nach Folgefehler, aufgrund den fehlenden Bestellungen.

Sieht aus, dass diese User früher mal Vorkasse als Bezahlung hatten, aber im neuen Shop Vorkasse nicht gibt.

Die Anrede ist im neuen Shop unbekannt. Eigentlich komisch, weil „mr“ im SW6 Standard ist. Vielleicht nicht zugeordnet?

Ja bei alten Shops durchaus möglich. Wenn man in der Zwischenzeit viel verändert hat. Wie z.B. Bezahlarten gelöscht, Versandarten gelöscht, User gelöscht. Userdaten unvollstaändig. Viele Faktoren können beitragen das Bestellungen nicht übernommen werden.

Hm also ich habe mal die Zahlungsmöglichkeit „Vorkasse“ im Zielshop aktiviert und jetzt scheint sich dieses Problem schonmal geklärt zu haben. Salutation habe ich auch fixen können. Leider sind aber keine weiteren Bestellungen migriert worden. Ich habe jetzt noch

[warning] SWAG_MIGRATION__SHOPWARE_ASSOCIATION_REQUIRED_MISSING_ORDER
Associated order not found
The order with the source id "1562" can not be found but is required for order_document.

[warning] SWAG_MIGRATION__SHOPWARE_ASSOCIATION_REQUIRED_MISSING_ORDER
Associated order not found
The order with the source id "1568" can not be found but is required for order_document.

[warning] SWAG_MIGRATION__SHOPWARE_ASSOCIATION_REQUIRED_MISSING_ORDER
Associated order not found
The order with the source id "1563" can not be found but is required for order_document.

[warning] SWAG_MIGRATION__SHOPWARE_ASSOCIATION_REQUIRED_MISSING_ORDER
Associated order not found
The order with the source id "1564" can not be found but is required for order_document.

[warning] SWAG_MIGRATION__SHOPWARE_ASSOCIATION_REQUIRED_MISSING_ORDER
Associated order not found
The order with the source id "1569" can not be found but is required for order_document.

[warning] SWAG_MIGRATION__SHOPWARE_ASSOCIATION_REQUIRED_MISSING_ORDER
Associated order not found
The order with the source id "1570" can not be found but is required for order_document.

hundertfach

und

[error] SWAG_MIGRATION_RUN_EXCEPTION
An exception occurred
Entity: order_document, sourceId: 01906de141c3717485939aa9bb7b3489
An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`d040ca65`.`document`, CONSTRAINT `fk.document.order_id` FOREIGN KEY (`order_id`, `order_version_id`) REFERENCES `order` (`id`, `version_id`) ON UPDATE CASCADE)

[error] SWAG_MIGRATION_RUN_EXCEPTION
An exception occurred
Entity: order_document, sourceId: 01906de141c3717485939aa9bb944712
An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`d040ca65`.`document`, CONSTRAINT `fk.document.order_id` FOREIGN KEY (`order_id`, `order_version_id`) REFERENCES `order` (`id`, `version_id`) ON UPDATE CASCADE)

[error] SWAG_MIGRATION_RUN_EXCEPTION
An exception occurred
Entity: order_document, sourceId: 01906de14293737bb76881fc69424392
An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`d040ca65`.`document`, CONSTRAINT `fk.document.order_id` FOREIGN KEY (`order_id`, `order_version_id`) REFERENCES `order` (`id`, `version_id`) ON UPDATE CASCADE)

[error] SWAG_MIGRATION_RUN_EXCEPTION
An exception occurred
Entity: order_document, sourceId: 01906de14293737bb76881fc6bbda5f2
An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`d040ca65`.`document`, CONSTRAINT `fk.document.order_id` FOREIGN KEY (`order_id`, `order_version_id`) REFERENCES `order` (`id`, `version_id`) ON UPDATE CASCADE)

hundertfach

Die beiden anderen Probleme haben sich wohl geklärt :confused:

Sieht so aus, dass hier Bestellungen fehlen. In SW5 Shop gehen und dort in Tabelle „s_order“ prüfen ob es einen Eintrag mit ID 1562 gibt. Falls nichts, dann fehlt wohl die Bestellung. Falls vorhanden, dann Bestellung inkl. Dokumente prüfen.

Wie schon erwähnt => Folgefehler
Weil wohl die Bestellugen fehlen können die Dokumnte nicht angelegt bzw. mit der Bestellung verknüft werden.

Ich würde empfehlen, die Migration über die Konsole zu machen - dann siehst du besser ob alle Bestellungen übermittelt worden sind.

bin/console migration:migrate customersOrders

Und davor am besten mal über die Datenbank die Prüfsumme für die Bestellungen zurücksetzen, damit auf jeden Fall alle noch einmal migriert werden:

UPDATE swag_migration_mapping
SET checksum = null
WHERE entity = "order"

Wenn dann immer noch was fehlt, wie @R4M beschrieben vorgehen und/oder in den swag_migration Tabellen nach der id der betroffenen Bestellung suchen - da sollte es dann irgendwo auch eine Fehlermeldung/Hinweis dazu geben.

Hi, also ich habe jetzt erstmal wie von R4M beschrieben die Tabelle gecheckt und es scheinen einige Bestellungen zu fehlen bzw. einige IDs nicht vergeben zu sein, siehe Screenshot. Die Frage wäre dann: Gibt es überhaupt eine Möglichkeit dann zu importieren? Normalerweise müsste er diese Bestellungen doch einfach nur auslassen? Er scheint dann aber halt komplett abzubrechen und gar nichts mehr zu übernehmen. Console teste ich ebenso noch.

Was nicht mehr im Quellsystem vorhanden ist, kann auch nicht übernommen werden.

Nein, weil beim Anlegen der Dokumente das zusätzlich überprüft wird.

Nur so eine Idee (bisher nicht umgesetzt):

Vielleicht kann man eine Dummy-Bestellung machen. Dann alle Bestellungen per SQL auslesen, wo es nur noch Dokumente gibt aber keine Bestellung. Dann diese Dokumnte der Dummy-Bestellung zuordnen. Ob das funktioniert weiß ich nicht. Daher nur so eine Idee um zumind. die Dokumente zu übernehmen.

Oder den Quellshop nach der finaler Migration noch auf einer Subdomain eine Weile laufen lassen. Um ggf. später per SQL noch fehlende Daten zu ergänzen oder um einfach nur zu kontrollieren.

Also Console funktioniert nicht. Gehe in den Ordner /sw6 oberhalb von /public und führe den Befehl aus. Resultiert in:

Parse error: syntax error, unexpected ‚:‘, expecting ‚)‘ in /www/htdocs/xxx/sw6/bin/console on line 47

Hast du eine Idee?

Ich tippe stark auf die falsche PHP-Version in der Konsole.

  • Hast du die Frosh-Tools installiert und geschaut ob alles sauber eingerichtet ist?
  • Hast du Admin-Worker deaktiviert?

Ich muss gestehen, ich bin mit der Console nicht wirklich firm - aber so Basics sollte ich eigentlich hinbekommen. Wie ändere ich denn die PHP Version in der Console. Frosch Tools kannte ich vorher nicht - Plugin habe ich mal installiert und aktiviert - die Befehle, die ich aber damit wohl machen kann liefern in der Console die gleiche Fehlermeldung. Admin Worker ist nicht aktiv.

Eventuell muss man in der Konsole die PHP-Version mit angeben. Aber! Da müsstest du ggf. deinen Hoster fragen. Könnte vielleicht so aussehen:

/opt/plesk/php/8.2/bin/php bin/console migration:migrate customersOrders

Ich wiederhole es gerne - leider. Aber Shopware 6 ist ohne umfangreiches technische Wissen und sinnvollerweise auch Erfahrung mit Shopware 6 kaum sinnvoll alleine zu betreiben.

Nur mit Admin-Workern, wirst du die Migration (mit Medien etc.) nicht sauber hinbekommen. Und auch der Produktivbetrieb ist mit Admin-Workern und ohne sauber aufgesetztes Shopware 6 System nicht zu empfehlen.

Dass die PHP-Versionen auf der Konsole nicht passt, dürfte zudem ein Indiz sein, dass es sich auch nicht um ein Shopware 6 optimiertes Hosting handelt.

Unter Shopware 6 Migration ✓ Ultimativer Leitfaden ✓ Checkliste haben wir einen kostenlosen Leitfaden veröffentlicht, der auch einige (grundlegende) Themen für das Aufsetzen einer Shopware 6 Staging Umgebung behandelt.

1 „Gefällt mir“
php -v

sollte Dir die PHP-Version auf der Konsole ausgeben. Da muss sowas hier bei rauskommen

PHP 8.2.20 (cli) (built: Jun  8 2024 21:32:49) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.20, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.20, Copyright (c), by Zend Technologies