In veel situaties is het interessant om productdata over te zetten of tussen twee systemen te synchroniseren.

Het scheelt arbeid, tijd en minimaliseert de kans op fouten. Voorbeelden zijn het importeren van een productfeed van de leverancier, het importeren van productdata uit de oude webshop, het importeren van prijslijsten van fabrikanten of de data uit het huidige voorraad-, orderverwerking- of boekhoudpakket. Importeren is een complexe en zorgvuldige taak, waardoor in veel situaties een fundamentele kostenpost van het project. H&O werkt met imports in drie situaties:

Situatie 1:

Er zijn teveel producten om handmatig in te voeren. Bijvoorbeeld meer dan 100 / 200 producten.

Situatie 2:

Data is te complex of uitgebreid om handmatig over te zetten en de kans op fouten en het risico bij foutieve data te groot. De verhouding producten en verschillende aangeleverde databestanden is oneerlijk, bijvoorbeeld 100 producten aangeleverd in 10 van elkaar verschillende databestanden.

Situatie 3:

De import is niet eenmalig. Er moet periodiek informatie worden uitgewisseld van systeem A naar systeem B. Denk aan voorraadinformatie of prijslijsten die regelmatig worden aangepast.

Het scheelt arbeid, tijd en minimaliseert de kans op fouten.

Werkwijze

Het format - het bestandsformaat en de indeling - waarin productinformatie beschikbaar is, is in iedere situatie verschillend. Hoewel er in het geval van een export vanuit een oud webshopssysteem vaak nog enige flexibiliteit is, zijn de bestanden aangeleverd door leveranciers of pakketten die geëxporteerd worden vanuit gesloten pakketten (zoals een orderverwerkingsprogramma of SCM-pakket) niet aan te passen. In vrijwel 100% van de gevallen zijn ze niet compatible met Magento. H&O werkt bij importeren van productdata in Magento daarom in twee stappen; stap 1 bestaat uit het converteren van de aangeleverde data naar een door Magento importeerbaar formaat en stap 2 uit het daadwerkelijk importeren van deze data via cron. Deze werkwijze heeft een aantal voordelen:

  • Er is vrijheid om de data te manipuleren voordat deze wordt geïmporteerd. Kolommen kunnen worden gevuld met aangeleverde data waarop een rekensom is losgelaten (prijs = prijs + marge) of met een combinatie van velden (productnaam = merk + productnaam + kleur).
  • Door bij stap 2 te werken met de onderliggende techniek van de standaard importmodule van Magento, is het importeren razendsnel; gemiddeld 80 producten per seconde (dat is net aan twee minuten voor 10.000 producten).
  • Productinformatie wordt direct in de database geschoten, zonder Magento te initialiseren. Dit is op geen enkele manier belastend voor de server. Het direct communiceren met de database is risicoloos toe te vertrouwen aan de techniek van de standaard Magento import/export module.
  • Door imports te runnen via cron, loopt het proces volledig automatisch en op vaste tijdstippen. Er komen geen handmatige handelingen aan te pas zoals het uploaden van importbestanden of het opstarten van het importproces in de browser.

Bestandsformaat(en) en datafeeds downloaden

Wanneer data periodiek moeten worden geïmporteerd, dan wordt er met de dataleverancier een afspraak gemaakt over hoe en waar hij bestanden beschikbaar stelt. Leveranciers kunnen bestanden uploaden naar de server of H&O kan automatisch databestanden downloaden via FTP en HTTP. Onderdeel van deze afspraak is ook systeem brengen in de manier waarop nieuwe databestanden worden genoemd en georganiseerd. Oude systemen, verschillende dataleveranciers en exports stellen productdata beschikbaar in verschillende bestandsformaten. H&O kan werken met alle bekende dataformaten, zoals XLS, XML, CSV en onbewerkte databasedumps. Daarnaast is het in veel gevallen mogelijk om data te converteren naar één van deze formaten. Dit proces vindt automatisch plaats op de server, zodat hierbij geen menselijke handelingen hoeven te worden verricht.

Fieldmapping, datamanipulatie en afbeeldingen downloaden

De eerste deelactiviteit binnen stap 1, het converteren naar Magento importformat, is het mappen van de beschikbare informatie. Zo wordt bijvoorbeeld de kolom ‘aantal_op_voorraad’ gemapt naar de Magento kolom ‘qty’ of de kolom ‘product_title’ naar de magento kolom ‘name’.

Attributen waarbij verschillende waarden worden geaccepteerd - bijvoorbeeld; merk - worden automatisch aangevuld wanneer er een nieuwe waarde wordt herkend. Voegt de dataleverancier dus producten toe van een nieuw merk, dan wordt deze waarde automatisch als attribuutwaarde toegevoegd. Is het attribuut zo geconfigureerd dat deze onderdeel uitmaakt van de layered navigation - meestal wel, in het geval van het attribuut merk - dan zal dat betekenen dat de catalogus een nieuw merk heeft waarop bezoekers kunnen filteren. Via door H&O ontwikkelde helpers kunnen er kolommen worden samengevoegd of berekeningen worden losgelaten op de rauwe data. Zo kan de kolom prijs gevuld worden met de aangeleverde waarde inkoopprijs x marge, of kan het veld SKU een combinatie zijn van de aangeleverde productnaam, de kleur en het merk.

Een afbeelding of productfoto wordt vrijwel altijd aangeleverd als URL; een verwijzing naar de afbeelding op de server waarop de huidige webshop draait. Wanneer wordt gewerkt met data van een dataleverancier - bijvoorbeeld Icecat - dan worden afbeeldingen vaak door de dataleverancier via FTP geupload naar een locatie op de server. H&O download en plaatst afbeeldingen van externe locaties in een controlefolder op de server. Deze folder blijft bestaan, zodat bij een periodieke import kan worden gecontroleerd of de afbeelding reeds gedownload is.

Afbeeldingen worden tijdens de import verwerkt op Magento’s standaard manier; ze worden op de server opgeslagen in een op bestandsnaam gebaseerde mappenstructuur. H&O biedt de mogelijkheid bij een import meerdere afbeeldingen per product op te slaan en afbeeldingen als small_image, base_image of thumbnail in te stellen. Via het Magento admin panel kunnen afbeeldingen worden uitgeschakeld. De mogelijkheid om handmatig, via het Magento admin panel, extra afbeeldingen toe te voegen blijft bestaan, zonder dat ze bij een volgende import worden verwijderd of overschreven.

Foutafhandeling

De Magento import / export module is bijzonder nauwkeurig in het controleren van data. Corrupte of incomplete data worden niet geïmporteerd. H&O gebruikt dezelfde core functionaliteit van Magento om productdata te importeren, dus deze mate van controle blijft behouden. Wanneer er fouten optreden, dan worden deze gelogd. Een aantal veel voorkomende fouten en de manier waarop deze fouten worden afgehandeld door (de werkwijze van) H&O zijn de volgende:

  • Er is in de aangeleverde productdata tweemaal een product opgenomen met dezelfde SKU. Wanneer de import bij de tweede productregel aankomt, dan wordt deze regel bij het importeren overgeslagen.
  • De leverancier voegt een nieuwe kolom toe aan de productfeed. Bij het importeren levert dit geen problemen; de kolom is niet gemapt en wordt om die reden genegeerd.
  • Een verplichte kolom is leeg. Wanneer dit optreedt, wordt de volledige import geannuleerd. De foutmelding wordt aan onze ontwikkelaars gerapporteerd.

In geen van bovenstaande gevallen resulteert een fout bij de import in een niet functionerende webshop.

Categorieën importeren

Het importeren van categorieën gebeurt in veel gevallen deels op basis van de aangeleverde data - categorie-informatie die reeds bij producten is opgeslagen - en deels op nieuwe ideeën die de opdrachtgever door de mogelijkheden van Magento over categorieën en navigeren heeft. H&O biedt bij het importeren grote flexibiliteit in het op basis van algoritmes en condities herinrichten van de categoriestructuur. Een situatieschets:

Inktcartridge HP 364XL zwart is in het oude systeem ingedeeld in de categorieen ‘inktcartridges’, ‘364XL (serie)’ en ‘HP’ . Voor iedere printer waarvoor dit product geschikt is, bestaat een categorie. Bij het product staan naast de bovenstaande, ook alle id’s van deze ‘compatible printer’ categorieën. De wens is om bezoekers twee manieren van navigeren te bieden: enerzijds op basis van cartridgenummer, de categoriestructuur is: inktcartridges > blader op inktcartridge > HP > 364XL > HP 364XL zwart, anderzijds op basis van printertype: inktcartridges > blader op printertype > HP > Deskjet > HP DeskJet 3520 > HP 364XL zwart.

H&O kan werken met meerdere databestanden, als categorie-informatie of attribuut-data als individuele databestanden worden aangeleverd. In een situatie als de bovenstaande komt het voor dat het genereren van een nieuwe categorie, zoals [inktcartridges]/[merk]/[printertype]/ [merk][cartridgeserie]/[merk][productnaam] uit data wordt opgebouwd afkomstig uit verschillende tabellen. Merk en cartridgeserie leveren in dit voorbeeld samen de categorie HP DeskJet 3520 op. Deze keuze - het combineren van data voor het genereren van een categorie - kan worden gedaan om SEO technische reden; de categorie is een op zichzelf staande pagina die, verrijkt met bijvoorbeeld een tekstuele beschrijving, organisch verkeer kan trekken.

Andere interessante mogelijkheden die H&O bij het importeren van categorieën biedt zijn:

  • Categoriepaden die niet langer in de geïmporteerde data terugkomen worden verwijderd.
  • Door data te importeren op admin niveau blijft de vrijheid bestaan om categoriebeschrijvingen toe te voegen of categorieën tijdelijk uit te schakelen, zonder dat deze bij een volgende import worden overschreven.
  • Niet bestaande categorieën worden aangemaakt.
  • Indien categorieën als afzonderlijke feed worden aangeleverd, dan is het mogelijk om ook categorie-omschrijvingen, meta data en afbeeldingen te importeren.

Grote importbestanden en memory errors

De grootte van databestanden met duizenden producten loopt snel op, regelmatig tot honderden MB’s per feed. De standaard Magento dataflow module laadt databestanden in het werkgeheugen van de server, waardoor Gigabytes aan geheugen nodig zijn om de data te verwerken. In zulke gevallen ontstaan memory errors (het gebrek aan beschikbaar geheugen) bij het importeren in Magento. Onderdeel van onze werkwijze is om die reden het automatisch opdelen van de feed in deelbestanden en het opslaan op de harde schijf van de server. Bij het importeren worden deze bestanden regel voor regel in het geheugen geladen en verwerkt. De praktijk wijst uit dat periodieke imports van 500.000 producten op deze manier mogelijk zijn.

Een belangrijk aandachtspunt bij grote aantallen producten, is het genereren van indexeringen. Dit is in tegenstelling tot het importeren wél belastend voor de server. Om deze reden herindexeert H&O bij een periodieke import niet de volledige catalogus, maar wordt een mass update action gesimuleerd voor alleen de producten die nieuw zijn of gewijzigd zijn. Zo ontstaat een vorm van ‘partial reindexing’; de indexeringen worden geüpdate met alleen productinformatie van deze producten.

Notitie: Performance is een complex, veelomvattend vraagstuk bij Magento webshops met grote aantallen producten. De import en indexeringen zijn slechts deelaspecten.

Eigen productbeschrijvingen en prijzen toevoegen

Wanneer productinformatie éénmalig wordt gemigreerd van het oude systeem (webshop, voorraad-, orderverwerking- of boekhoudpakket) naar Magento, dan kan na een succesvolle sessie productdata via Magento worden bewerkt. Er kunnen bijvoorbeeld nieuwe attributen en afbeeldingen worden toegevoegd, beschrijvingen kunnen worden gewijzigd en voorinformatie kan worden aangepast.

Om - in het geval van periodieke imports - te voorkomen dat aanpassingen in productinformatie worden overschreven / gereset, importeert H&O data in Magento op adminniveau. De admin > website > storeview hiërarchie die standaard onderdeel is van Magento wordt gebruikt om dergelijke wijzigingen in content op een hoger liggend niveau te doen. Hoewel H&O prijsinformatie op vrijwel alle mogelijke manieren kan bewerken bij het importeren, blijft het op deze manier bijvoorbeeld ook mogelijk om op de reguliere manier catalogus prijsregels toe te passen voor het aanbieden van tijdelijke acties en promoties.

Voorraden

Informatie in een productfeed komt alleen voor wanneer de productdata direct afkomstig zijn van de leverancier of fabrikant en in veel gevallen bij dropship constructies. In andere constructies, zoals het werken met fullfillment partijen, verschillende voorraadlocaties of webshops die een verlengstuk zijn van een fysieke winkel (met kassaverkoop), wordt voorraadinformatie op andere wijze verwerkt.

Bij de import van voorinformatie is communicatie per definitie eenzijdig; er worden geen mutaties gecommuniceerd naar de bron. Om te voorkomen dat een product nog wordt aangeboden terwijl de voorraad tussen twee importmomenten door bij de leverancier inmiddels uitverkocht is, adviseert H&O voor deze producten een marge in te stellen. Het product wordt dan bijvoorbeeld al op ‘uitverkocht’ gezet wanneer de voorraad minder is dan 20 stuks.

Prijzen

Een interessante mogelijkheid die H&O biedt bij het importeren van productinformatie is het systematisch bewerken van prijzen. Zo kan de prijs die uiteindelijk in Magento wordt geïmporteerd, bijvoorbeeld het resultaat zijn van één van de volgende berekeningen:

  • Verkoopprijs = inkoopprijs + merkspecifieke marge + BTW tarief
  • Verkoopprijs = inkoopprijs + verzendkosten (gewicht x prijs per kg)
  • Verkoopprijs = inkoopprijs + marge per productgroep + BTW tarief

Prijzen inclusief BTW zijn af te ronden op bijvoorbeeld € 9,99 of € 9,95. Het importeren van staffelprijzen behoort ook tot de mogelijkheden. Hierin bestaat dezelfde vrijheid als bij het berekenen van de prijzen. In veel gevallen worden staffelprijzen berekend als verkoopprijs - toenemend percentage korting per staffel.

Producten en categorieën verwijderen

H&O biedt de mogelijkheid om categorieën en producten die niet langer in de aangeleverde datafeed zijn opgenomen automatisch uit de webshop te verwijderen. Dit is in veel gevallen wenselijk; het voorkomt dat de database vervuild raakt met producten die niet meer worden verkocht of als vernieuwd product (ander naam, nieuwe OEM / EAN nummers) zijn toegevoegd.

Het verwijderen van producten gebeurt wanneer de laatste datum waarop een product aanwezig was in de productfeed (wordt bij iedere periodieke import geregistreerd), bijvoorbeeld ouder is dan 30 dagen. Afhankelijk van de situatie kan ook voorraad-informatie een rol spelen in de kwalificatie van te verwijderen producten.

Producttypen en productrelaties

Wanneer in de aangeleverde productdata een relatie tussen producten onderling aanwezig is, dan biedt H&O de mogelijkheid om deze informatie bij een import mee te nemen. Zo kunnen in Magento producten als gerelateerde producten, upsells of cross-sells worden geïmporteerd. Complexer, maar tevens een mogelijkheid van H&O’s import methode, is het importeren van producten als grouped products, configurable products, bundelproducten of simple products met productoptions. Voorwaarde is dat de relatie tussen producten van hiërarchische aard is.

Kennis maken met ons Team? - De koffie staat klaar!

Curriculum Vitae (CV), Request for proposal of specificatiedocument.

* Verplichte velden