Hoe je jouw Magento productdata naar Shopware 6 met Akeneo PIM migreert

De end-of-life van Magento 1 komt snel dichterbij. Dit is voor veel webshop eigenaren een reden om ook eens naar andere e-commerce platformen te kijken. Eén van die platformen is Shopware 6. Shopware 6 werd afgelopen januari gelanceerd en is zeer snel, stabiel en gebruiksvriendelijk. Mocht je een overstap overwegen, dan is dit bij uitstek het moment om óók al je productinformatie op orde te krijgen.

In deze blogpost legt gastauteur Michel Doens, eigenaar van Shopware Enterprise Partner Sition, je stap voor stap uit hoe jij je Magento productdata naar Shopware 6 met het Product Information Management (PIM) systeem van Akeneo migreert. De overstap van Magento naar Shopware is niet moeilijk, maar vergt wel een goede voorbereiding.

Voorbereiding

Exporteer je productdata uit Magento 1

Als eerste moet je jouw productdata uit de huidige Magento 1 omgeving exporteren volgens het onderstaande stappenplan

  1. Controleer of je daadwerkelijk alle producten wilt meenemen in de migratie. Hoe beter de data nu al is opgeschoond, hoe minder werk in het vervolgtraject!
  2. Ga naar ‘Systeem’ -> ‘Importeren/exporteren’
  3. Kies ‘Products’ & ‘CSV’
  4. Selecteer eventuele attributen die je niet wilt exporteren
  5. Klik op ‘Doorgaan’. Je hebt nu een productbestand aangemaakt en gedownload
  6. Log met SFTP in op de Magento 1 omgeving. Navigeer vervolgens naar de map media/catalog/products en download de inhoud. Deze inhoud heb je nodig om straks naar Akeneo te uploaden
Magento 1 Export

Magento 1 Exportfunctie

Optioneel

Je kunt ook de categorieën door middel van diverse plug-ins exporteren. Dit is geen vereiste omdat in de bovenstaande productexport ook een veld ‘categorie’ wordt geëxporteerd. Deze producten zijn in de ‘bulk’-editor eenvoudig en snel aan een categorie in Akeneo te koppelen.

Exporteer je productdata uit Magento 2

Als je je productdata uit Magento 2 wil exporteren, dan raden we je aan om de plug-in Firebear improved & export plug-in te gebruiken. Deze plug-in exporteert meer data (attributen en categorieën) dan de standaard Magento 2 import/export functie.

Exporteer door middel van deze plug-in de onderstaande data:

  • Attributes
    • Deze export bevat ook de ‘Attribute options’
  • Products
  • Categories

Om de data via de standaard Magento 2 functie te exporteren, volg je het volgende plan:

  1. Ga naar ‘System’ -> ‘Export’
  2. Kies ‘Entity type’ producten
  3. Kies ‘CSV’
  4. Vink aan ‘Fields enclosure’
  5. Vink vervolgens aan welke attributen je NIET wilt exporteren
  6. Klik onder op ‘continue’

Data bewerking Magento 1 & 2

Voordat producten in Akeneo geïmporteerd kunnen worden, moet je het PIM systeem eerst inrichten. Om dit eenvoudig en efficiënt te doen, is het handig om de begrippen in het onderstaande overzicht te kennen.

Akeneo Magento Shopware 5 Shopware 6
Attribute Attribute Property Property
Attribute group [ drag-drop in editor ] [ not available] [ not available]
Family Attribute set Property Group [ not available]
Product  Product Items / Products / Articles Product
Product (variant) Simple Product Variant as part of Product Variant as part of product
Product Model Configurable product Main product Product
Product (variant) Simple product Variant of product Variant of Product
Categories Categories Categories Categories
Groups  [ not available] [ not available] [ not available]
Group types [ not available] [ not available] [ not available]
Locales Locales Locales / Languages Locales / Languages
Channels Website / Storeview Shop / Sub-shops Sales Channels

 

Opmerking Shopware 5 attributen

Shopware 5 kent op veel entiteiten zoals ‘klanten’, ‘producten’ en ‘categorieën’ ook vrije velden en attributen. Deze zijn handig om extra data op te slaan.

Echter gedragen deze vrije velden zich anders dan een attribuut zoals we dat in Magento kennen. In Shopware 5 zijn dit vooral tekstvelden, maar je kunt deze velden ook instellen als filter die standaard niet zichtbaar is. Slechts de velden attributen 1 & 2 zijn standaard zichtbaar bij een product. De overigen kunnen zichtbaar gemaakt worden door het template aan te passen.

Opmerking Shopware 6 vrije velden

Ook Shopware 6 kent op dezelfde entiteiten (‘klanten’, ‘producten’ en ‘categorieën’) vrije velden. Deze zijn handig om extra data op te slaan, maar nog niet bruikbaar als filter en daarnaast ook niet zichtbaar in het thema.

Bereid je bestanden voor

Voorafgaand aan de import naar Akeneo moeten de onderstaande bestanden worden voorbereid:

1. Category import.csv: bestand met alle categorieën [optioneel]

Categorieën kunnen ook rechtstreeks in het PIM systeem worden aangemaakt. Dit bestand is niet strikt noodzakelijk.

2. Attribute import.csv: bestand met alle attributen c.q. omschrijving van het kenmerk bijvoorbeeld ‘kleur’

Let op dat prijzen als ‘prijs’ geïmporteerd worden en niet als ‘number’. Het attribuut type dient ‘pim_catalog_price_collection’ te zijn.

3. Attribute option import.csv: bestand met alle attribuut opties zoals ‘groen’ of ‘blauw’

Wanneer het attribuut van het type ‘select’ of ‘multi-select’ is, werkt het iets anders. Denk bijvoorbeeld aan ‘kleur’ waar eerst alle kleuren gedefinieerd moeten worden. Overige attributen zoals ‘text’, ‘number’, ‘price’ of ‘text area’ moeten ook als optie gedefinieerd te worden.

Er gaat behoorlijk wat werk zitten in het maken van lijsten met al deze opties. Standaard moeten dergelijke opties eerst in Akeneo ingelezen worden. Gelukkig is het mogelijk deze stap over te slaan door het gebruik van een Akeneo Plug-in welke tijdens het importeren de opties automatisch aanmaakt. De Akeneo attribuut opties worden automatisch aangemaakt door het gebruik van de Akeneo Auto Attribute Bundle plug-in.

4. Attribuut group import.csv: cluster de attributen zoals prijzen, metadata, etc.

Dit bevordert de gebruiksvriendelijkheid tijdens het gebruik van het PIM systeem. [optioneel]

5. Family import.csv: bestand met attribuut sets

In dit bestand wordt aangegeven welke attributen in een attribuut set horen. Indien er een ‘configurable’ attribute zoals kleur of maat wordt gebruikt dient deze zowel in family import als family variant import voor te komen.

6. Family variant import: bestand waar de relaties tussen de simpele en configureerbare attributen wordt vastgelegd per familie cq. attribuut set. Voorbeeld: maat / kleur.

Informatie over het opstellen van dit bestand kun je vinden in de Magento kolom ‘configurable_variations’. De attributen die hier vermeld worden, dienen per attribuutset in een ‘family’ terecht te komen. Daarnaast is per ‘product model’ c.q. ‘configurable product’ te vinden welke onderliggende producten als variant gekoppeld zijn. Bij al deze gekoppelde producten dient de kolom ‘parent’ gevuld te worden met de ‘sku’ van het configurable cq. hoofdproduct. Dit is een tijdrovend proces. De Firebear Improved Configurable Export voor Magento 2 kan hier een uitkomst bieden. Voor Magento 1 is deze module niet beschikbaar en blijft het hand- of programmeerwerk.

7. Product model import: bestand met alle configureerbare producten (hoofdproducten)

Product model is een bestand met alle ‘configurable’ products. Dit bestand is relatief makkelijk te maken door het Magento product bestand te filteren op basis van ‘ ‘product_type’ = ‘configurable’. Neem enkel deze producten in dit bestand op.

8. Product import: bestand met de ‘normale’ c.q. ‘simpele’ producten en/of varianten

In dit bestand zijn alle ‘simpele’ bestanden opgenomen. Dit bestand is relatief makkelijk te maken door het Magento product bestand te filteren op basis van ‘ ‘product_type’ = ‘simpele’ of ‘downloadable’.

Niet ondersteund door Akeneo
‘Bundle’ of ‘Grouped’ producten worden niet ondersteund en zullen in Shopware 6 aangemaakt moeten worden.

Op de GitHub pagina van Sition vind je voorbeelden van de hierboven beschreven import bestanden.

Importeer je producten in Akeneo

Er moet voor ieder van de bovenstaande 8 bestanden een import profiel in Akeneo aangemaakt worden. Voordat we hiermee kunnen beginnen, moet er eerst aan de onderstaande eisen worden voldaan.

Uitgangspunten Akeneo

  • Akeneo v3.x is geinstalleerd (NIET v4, daarvoor zijn de koppelingen nog niet beschikbaar!)
  • Er is toegang tot de server en met SFTP kan men bestanden uploaden
  • Demo data is NIET geïnstalleerd
  • Settings -> Currencies hier is EURO geactiveerd
  • Settings -> Locale hier is minimaal ‘en_US’ geactiveerd
  • Settings -> Channels er is minimaal 1 channel ‘Ecommerce’ beschikbaar

Aanmaken import profielen & importeren

Import Profiles Management

Create Import Profiles

1. Ga naar Import -> Create new import profile
2. Geef als code ‘sw6_category_import’
3. Geef als label ‘1. Shopware 6 category import’
4. Kies ‘job’ -> ‘Category import in CSV’
5. Klik ‘save’
6. Klik ‘upload a file’
7. Kies ‘Category import.csv’ op jouw pc
8. Kies ‘upload & import’ now
9. Er wordt nu weergegeven ‘Status: Starting’, het bestand wordt nu geïmporteerd. Opmerking: blijft deze status te lang op ‘Starting’ staan, dan is de ‘cronjob’ of ‘deamon’ welke het import proces start nog niet geactiveerd
10. De job is ook handmatig te starten door op de commandline het volgende commando in te geven ‘php bin/console akeneo:batch:job-queue-consumer-daemon –env=prod’
11. Na het importeren ga je naar ‘Channels’ -> ‘Ecommerce’ en selecteer dit channel
12. Ga naar ‘Properties’ -> ‘Category tree’ en koppel de zojuist geïmporteerde category tree aan dit channel door ‘Default Category’ te selecteren en klik op ‘save’
13. Herhaal stap 1 t/m 8 voor bestanden 1 t/m 5

Shopware 6 Product Import

Shopware 6 Product Import

14. Product model import: hier dienen ook afbeeldingen geïmporteerd te worden. We werken nu niet met een bestand dat we uploaden in browser. We uploaden alle afbeeldingen en het product model.csv bestand met SFTP naar een map op de server
15. Log in met SFTP op de server en maak een map ‘upload’ aan in de home folder van de gebruiker bijvoorbeeld: /home/pim02/upload
16. Upload de ‘media’ map zoals deze hier te vinden is https://github.com/SitionNL/akeneo_import_example_shopware (de repostitory is als ZIP te downloaden). Er is nu ook een /home/pim02/upload/media map aanwezig, met daarin subfolders en afbeeldingen
17. Geef als code ‘sw6_product_model_import’
18. Geef als label ‘7. Shopware 6 product model’
19. Kies ‘job’ > ‘Product Model import in CSV’
20. Klik ‘save’
21. Klik op het tabblad ‘global settings’
22. Voer bij het path het volledige path naar het bestand ‘7-m2sample-Shopware6-product_model-configurable_import.csv’ in naar de zojuist aangemaakte map onder 15
23. Klik ‘save’

Import Profile 6 Shopware 6 Product Model

24. Klik ‘import now’
25. Herhaal stap 17 t/m 24 voor ‘product_import’

Nu we deze stappen hebben doorlopen, is het PIM gevuld met Magento 2 demo data voor de import naar Shopware 6.

Akeneo verbinden met Shopware 6

Nu alle producten en categorieën in Akeneo staan, kunnen we beginnen met het koppelen. We gebruiken hier de plug-in van Webkul. De plug-in is recent ontwikkeld en prima te gebruiken, al zijn er nog wel diverse punten die in een volgende versie (na maart 2020) verbeterd dienen te worden. De bijzonderheden bespreken we hier. We gaan er van uit dat je de installatie instructies in de handleiding volgt. Naast de Akeneo plug-in dient er ook een Shopware plug-in geinstalleerd te worden t.b.v. het uploaden van plaatjes naar Shopware.

Wat erg onduidelijk is in de handleiding: je dient eerst data uit Shopware 6 over te zetten naar Akeneo en te koppelen aan de producten voordat je kunt exporteren vanuit Akeneo.

Hoe dit werkt?

  • Koppel c.q. ‘map’ eerst de onderstaande velden aan het attribuut. Dit doe je bij Shopware 6 connector -> set attribute mapping
  • De overige velden spreken voor zich, let wel op dat ja/nee opties als waarde true/false gebruikt
  • Aandacht voor prijzen: de connector verwacht een net (excl. BTW) en gross (incl. BTW) prijs. De connector kan op dit moment niet de prijzen van de varianten overnemen. Let op dat je een prijsveld koppelt dat aan het ‘product model’ is gekoppeld en niet aan de variant
  • Het is mogelijk extra Shopware velden te importeren. De volgende velden kun je gebruiken als “shopware Standard attribute code(required)”:
    • ean – Varchar(255)
    • active – Tinyint(1)
    • manufacturerNumber – Varchar(255)
    • isCloseout – Varchar(255)
    • availableStock – Int(11)
    • available – Tinyint(1)
    • purchaseSteps – Tinyint(1)
    • restockTime – Int(11)
    • height – Decimal(10,3)
    • width – Decimal(10,3)
    • referenceUnit – Int(11)
    • purchaseSteps – Tinyint(1)
    • releaseDate – Datetime(3)
  • Importeer de data uit Shopware 6 naar Akeneo. Dit doe je bij imports, zie onderstaande instructie
  • Gebruik de Bulk editor functie van Akeneo om de juiste velden aan de producten te koppelen

1. Data importeren vanuit Shopware 6 naar Akeneo

Sales Channels, map: sw6_sales_channel, import job: Sales import
Tax id’s, map: sw6_tax_id, import job: Tax import
Manufacturers map: sw6_manufacturer, import job: Manufacturer
Delivery time map: sw6_delivery_time, import job: Delivery time
Scale units map: sw6_delivery_scale, import job: Scale

2. Importeer de Shopware 6 velden

  1. Ga naar Import
  2. Klik create import profile
  3. Code: sw6_delivery_scale, job: sw6_delivery_scale
  4. Job: ShopWare6 connector > Scale imort
  5. Klik ‘import’
  6. Herhaal dit voor alle import jobs 1 t/m 5 genoemd onder stap 1

3. Bulk editor

Nu alle Shopware 6 velden gevuld zijn is het tijd om met de Akeneo bulk editor de velden te vullen. De bulk editor is een hele handige functie binnen Akeneo.

Akeneo Bulk Editor

Akeneo Bulk Editor

1. Ga naar het product overzicht in Akeneo
2. Pas de filters toe om alle vergelijkbare producten te filter
3. Klik naast 1 product op de checkbox. Helemaal onderaan de pagina is nu een klein maar belangrijk pijltje te zien. Het is hier mogelijk ‘alle’ producten te selecteren
4. Klik vervolgens op ‘bulk actions’
5. Klik op ‘edit attribute values’
6. Klik op ‘next’

Akeneo Bulk Editor Mass Edit

Akeneo Bulk Editor Mass Edit

7. Selecteer bovengenoemde attributen ‘sw6_sales_channel’, ‘sw6_tax_id’, ‘sw6_manufacturer ‘, ‘sw6_delivery_time’, ‘sw6_delivery_scale’
8. Klik op add
9. Klik op ‘next’
10. Vul de attributen
11. Klik op ‘next’ & ‘confirm’

Producten importeren in Shopware 6

Nu de producten in Akeneo voorzien zijn van de vereiste Shopware 6 data kan de koppeling gemaakt worden. Let op dat ook de prijsvelden gevuld zijn. In deze versie moet je zowel de netto als bruto prijs ingeven. Helaas is dit niet logisch, maar nog wel vereist. Dit kun je doen door het product import bestand te voorzien van de juiste prijs kolommen en opnieuw te importeren.

  1. Ga naar ‘Exports’
  2. Klik ‘create Export profile’
  3. Geef in code ‘sw6_export_all’ , label ‘alles exporteren naar Shopware 6’
  4. Kies job ‘Export all to Shopware 6’
  5. Herhaal stap 1 t/m 4 voor alle individuele exports naar Shopware 6 zodat je niet telkens alles hoeft te exporteren maar ook delen. Met name bij kleine wijzigingen is dit sneller. Daarnaast zijn dan ook de individuele taken te automatiseren
  6. Start de Export all to Shopware connector’
  7. Raar maar waar: we merken dat eerst het beter eerst alle individuele exports te doen in de volgorde: categorie, attributen, product models, products

Producten controleren in Shopware 6

Nu de producten en categorieën geïmporteerd zijn. Zul je in de Shopware backend de producten en categorieën terug vinden. Helaas zie je nog niets aan de voorkant en zijn de thumbnails niet zichtbaar. Om dit op de lossen zijn nog de volgende acties nodig:

Categorieën instellen

  • Koppel eerst de nieuwe categorieboom aan de gewenste Sales channel. Dit doe je door in de linker zijbalk het Sales channel te openen en bij ‘Entry point main navigation‘ de hoofdcategorie van de nieuwe categorieboom te kiezen
  • Daarna dienen de categorieën nog geactiveerd te worden
    • Ga naar Catalogues -> Category
    • Open 1 voor 1 elke categorie, geef een korte omschrijving, en pas het type aan naar ‘Category’ en sla deze op
  • Als alles goed is gegaan kun je nog de webshop openen, je ziet de categorieën en producten, echter nog zonder ‘cover image’. Deze is standaard na de import nog niet ingesteld. Het is mogelijk om dit via Shopware te doen. Om wat tijd te besparen kiezen wij voor een methode om dit via een database query te doen. We kiezen ervoor om het 1e plaatje als cover image in te stellen.

Update product

set product.cover = (select id from product_media where product.id = product_media.product_id and product_media.position =1 ), product.product_media_id = (select id from product_media where product.id = product_media.product_id and product_media.position =1 )