Migrationsfehler einzelner Produkte nicht nachvollziehbar

Hallo zusammen,

ich versuche gerade einen SW5 Shop af SW6 zu migrieren. Nach einer ersten Migration vor einiger Zeit habe ich nun die Migration erneut angestoßen, um dazu gekommene Produkte, Kunden und Bestellungen nachzumigrieren. Dabei gibt es bei den Produkten jedoch für mich nicht nachvollziehbare Schwierigkeiten, die sehr zufällig erscheinen.

Es handelt sich um Artikel, die sich sehr ähnlich sind und sich nur in wenigen Dingen grundlegend unterscheiden. Manche dieser Artikel werden migriert und manche können nicht konvertiert werden. An Unterschieden in den Produkten, die das auslösen könnten, habe ich kein Muster erkennen können.

Bei einer sehr homogenen Gruppe habe ich folgenden Verzweiflungstest gemacht:
Ich habe in SW5 in der Datenbank bei 4 Artikeln die Anzahl der Verkäufe von 0 abgeändert zu 1, 2, 3 und 4. Da andere Artikel mit 0 Verkäufen migriert werden konnten erschien mir das sehr abwegig. Resultat war aber, dass die Artikel mit den Verkäufen von 1 bis 3 migriert wurden und der mit 4 weiterhin fehlerhaft war und nicht konvertiert werden konnte.
Generell bei allen Artikeln bei den Verkäufen eine 1 einzutragen hat erwartungsgemäß das Problem nicht gelöst, aber ein paar mehr Produkte migriert als zuvor.

Hat jemand eine Idee, was diese sehr ähnlichen Produkte beim migrieren unterschiedlich macht? Und warum eine Zahlenänderung da manchmal was bewirkt?
Ich habe mir die Inhalte des raw Felds in swag_migration_data der Produkte verglichen, aber keine nützlichen Unterschiede gefunden. Der JSON Aufbau ist dabei auch gleich, obwohl die Fehlermeldung unten was anderes vermuten lässt.

In swag_migration_logging sieht das z.B. so aus:
Entity: product, sourceId: 18462
json_decode(): Argument #1 ($json) must be of type string, null given

Genaue Fehlermeldung aus ‚parameters‘:

{"entity":"product","sourceId":"18462","exceptionCode":0,"exceptionMessage":"json_decode(): Argument #1 ($json) must be of type string, null given","exceptionFile":"\/var\/www\/clients\/client1\/web7\/web\/custom\/plugins\/SwagMigrationAssistant\/src\/Migration\/Mapping\/MappingService.php","exceptionLine":137,"exceptionTrace":"#0 \/var\/www\/clients\/client1\/web7\/web\/custom\/plugins\/SwagMigrationAssistant\/src\/Migration\/Mapping\/MappingService.php(137): json_decode()#1 \/var\/www\/clients\/client1\/web7\/web\/custom\/plugins\/SwagMigrationAssistant\/src\/Migration\/Mapping\/MappingService.php(77): SwagMigrationAssistant\\Migration\\Mapping\\MappingService->getMapping()#2 \/var\/www\/clients\/client1\/web7\/web\/custom\/plugins\/SwagMigrationAssistant\/src\/Profile\/Shopware\/Converter\/ProductConverter.php(711): SwagMigrationAssistant\\Migration\\Mapping\\MappingService->getOrCreateMapping()#3 \/var\/www\/clients\/client1\/web7\/web\/custom\/plugins\/SwagMigrationAssistant\/src\/Profile\/Shopware\/Converter\/ProductConverter.php(370): SwagMigrationAssistant\\Profile\\Shopware\\Converter\\ProductConverter->getManufacturer()#4 \/var\/www\/clients\/client1\/web7\/web\/custom\/plugins\/SwagMigrationAssistant\/src\/Profile\/Shopware\/Converter\/ProductConverter.php(172): SwagMigrationAssistant\\Profile\\Shopware\\Converter\\ProductConverter->getProductData()#5 \/var\/www\/clients\/client1\/web7\/web\/custom\/plugins\/SwagMigrationAssistant\/src\/Migration\/Service\/MigrationDataConverter.php(91): SwagMigrationAssistant\\Profile\\Shopware\\Converter\\ProductConverter->convert()#6 \/var\/www\/clients\/client1\/web7\/web\/custom\/plugins\/SwagMigrationAssistant\/src\/Migration\/Service\/MigrationDataConverter.php(55): SwagMigrationAssistant\\Migration\\Service\\MigrationDataConverter->convertData()#7 \/var\/www\/clients\/client1\/web7\/web\/custom\/plugins\/SwagMigrationAssistant\/src\/Migration\/MessageQueue\/Handler\/Processor\/FetchingProcessor.php(74): SwagMigrationAssistant\\Migration\\Service\\MigrationDataConverter->convert()#8 \/var\/www\/clients\/client1\/web7\/web\/custom\/plugins\/SwagMigrationAssistant\/src\/Migration\/MessageQueue\/Handler\/MigrationProcessHandler.php(57): SwagMigrationAssistant\\Migration\\MessageQueue\\Handler\\Processor\\FetchingProcessor->process()#9 \/var\/www\/clients\/client1\/web7\/web\/vendor\/symfony\/messenger\/Middleware\/HandleMessageMiddleware.php(152): SwagMigrationAssistant\\Migration\\MessageQueue\\Handler\\MigrationProcessHandler->__invoke()#10 \/var\/www\/clients\/client1\/web7\/web\/vendor\/symfony\/messenger\/Middleware\/HandleMessageMiddleware.php(91): Symfony\\Component\\Messenger\\Middleware\\HandleMessageMiddleware->callHandler()#11 \/var\/www\/clients\/client1\/web7\/web\/vendor\/symfony\/messenger\/Middleware\/SendMessageMiddleware.php(71): Symfony\\Component\\Messenger\\Middleware\\HandleMessageMiddleware->handle()#12 \/var\/www\/clients\/client1\/web7\/web\/vendor\/symfony\/messenger\/Middleware\/FailedMessageProcessingMiddleware.php(34): Symfony\\Component\\Messenger\\Middleware\\SendMessageMiddleware->handle()#13 \/var\/www\/clients\/client1\/web7\/web\/vendor\/symfony\/messenger\/Middleware\/DispatchAfterCurrentBusMiddleware.php(68): Symfony\\Component\\Messenger\\Middleware\\FailedMessageProcessingMiddleware->handle()#14 \/var\/www\/clients\/client1\/web7\/web\/vendor\/symfony\/messenger\/Middleware\/RejectRedeliveredMessageMiddleware.php(41): Symfony\\Component\\Messenger\\Middleware\\DispatchAfterCurrentBusMiddleware->handle()#15 \/var\/www\/clients\/client1\/web7\/web\/vendor\/symfony\/messenger\/Middleware\/AddBusNameStampMiddleware.php(35): Symfony\\Component\\Messenger\\Middleware\\RejectRedeliveredMessageMiddleware->handle()#16 \/var\/www\/clients\/client1\/web7\/web\/vendor\/symfony\/messenger\/MessageBus.php(70): Symfony\\Component\\Messenger\\Middleware\\AddBusNameStampMiddleware->handle()#17 \/var\/www\/clients\/client1\/web7\/web\/vendor\/symfony\/messenger\/RoutableMessageBus.php(54): Symfony\\Component\\Messenger\\MessageBus->dispatch()#18 \/var\/www\/clients\/client1\/web7\/web\/vendor\/symfony\/messenger\/Worker.php(162): Symfony\\Component\\Messenger\\RoutableMessageBus->dispatch()#19 \/var\/www\/clients\/client1\/web7\/web\/vendor\/symfony\/messenger\/Worker.php(109): Symfony\\Component\\Messenger\\Worker->handleMessage()#20 \/var\/www\/clients\/client1\/web7\/web\/vendor\/symfony\/messenger\/Command\/ConsumeMessagesCommand.php(244): Symfony\\Component\\Messenger\\Worker->run()#21 \/var\/www\/clients\/client1\/web7\/web\/vendor\/symfony\/console\/Command\/Command.php(279): Symfony\\Component\\Messenger\\Command\\ConsumeMessagesCommand->execute()#22 \/var\/www\/clients\/client1\/web7\/web\/vendor\/symfony\/console\/Application.php(1047): Symfony\\Component\\Console\\Command\\Command->run()#23 \/var\/www\/clients\/client1\/web7\/web\/vendor\/symfony\/framework-bundle\/Console\/Application.php(123): Symfony\\Component\\Console\\Application->doRunCommand()#24 \/var\/www\/clients\/client1\/web7\/web\/vendor\/symfony\/console\/Application.php(316): Symfony\\Bundle\\FrameworkBundle\\Console\\Application->doRunCommand()#25 \/var\/www\/clients\/client1\/web7\/web\/vendor\/symfony\/framework-bundle\/Console\/Application.php(77): Symfony\\Component\\Console\\Application->doRun()#26 \/var\/www\/clients\/client1\/web7\/web\/vendor\/symfony\/console\/Application.php(167): Symfony\\Bundle\\FrameworkBundle\\Console\\Application->doRun()#27 \/var\/www\/clients\/client1\/web7\/web\/vendor\/symfony\/runtime\/Runner\/Symfony\/ConsoleApplicationRunner.php(49): Symfony\\Component\\Console\\Application->run()#28 \/var\/www\/clients\/client1\/web7\/web\/vendor\/autoload_runtime.php(29): Symfony\\Component\\Runtime\\Runner\\Symfony\\ConsoleApplicationRunner->run()#29 \/var\/www\/clients\/client1\/web7\/web\/bin\/console(17): require_once('...')#30 {main}","description":"Entity: product, sourceId: 18462\njson_decode(): Argument #1 ($json) must be of type string, null given"}

Shopware 6 und Migrationsassistent sind auf aktuellem Stand.

Ich konnte jetzt doch alle Produkte rübermigrieren.

Trick: Nicht eine SQL Abfrage schreiben, um Änderungen über die ganze Reihe von Artikeln durchzuführen, sondern alle Artikel einzeln ändern. :man_facepalming:
Habe dabei mit sales, stockmin und instock herumoperiert und konnte so langsam aber sicher alle Artikel erwischen.

Was genau man machen muss, weiß ich nicht. Bei ca. 150 Artikeln ein Feld ändern ändern hat nur für ein paar geholfen. Wenige Artikel und in mehreren Feldern hat dann besser funktioniert. Am Schluss konnte ich dann auch 50 Artikel auf einmal migrieren und habe dabei Änderungen in allen 3 Feldern vorgenommen. :man_shrugging:

Im Migrations-Log, also nicht im Shopware Error-Log, sind die Fehler normalerweise recht gut dokumentiert.

Aus dem Shopware Error-Log kann man nicht wirklich etwas ableiten, da hast du vollkommen Recht.

Der genannte Fehler stammt aus dem Migrations-Log (Datenbank Tabelle swag_migration_logging).

Dann ist der Log echt nicht gut :laughing:

Beim Überfliegen des Logs habe ich das Wort Manufacturer gesehen. Vermutlich tritt ein Fehler beim Mapping des Herstellers auf. Was da genau falsch laufen kann, kann ich dir nicht sagen.