13,154 orders in. 1 order out.

The source was an anonymised copy of a real Magento CE store: 3 websites, 13 store views, 7 languages including Simplified and Traditional Chinese, 7,629 products, 6,960 customers. Shopware's Migration Assistant ran every step green and finished with "The Migration is done". The target database held one order, eight customers and 2,313 products. Orders took the worst hit — one of 13,154 survived; across all entities, roughly 92% of the shop failed to arrive. The cause was a single string.

TL;DR

What broke. Magento stores some locales with a BCP-47 script subtag (zh_Hans_CN, zh_Hant_TW). The converter turns a Magento locale into a Shopware one with str_replace('_', '-', …), emitting zh-Hans-CN. Shopware's locale table has no such row — it uses zh-CN.

Why it cascades. The lookup fails with no fallback, so the language is not created. A sales channel needs a resolvable default language, so two of the three websites got no channel. Everything scoped to those channels then failed a foreign key at Writing.