Exportera och importera data mellan nätbutiker

När man ska flytta data från en nätbutik till en annan kommer man ställas inför några utmaningar på vägen. Vad man ska göra och hur man gör det beror på vilket stöd som finns i lösningen man ska flytta från och lösningen man ska flytta till. I vårt fall med Kodmyran som målplattform fanns det stora möjligheter att importera allt vi kunde behöva och så här gjorde vi upp planen för migreringen av data.

kodmyran-export

Kategorier

Basstrukturen i nätbutiken är dess kategoristruktur. Här hade vi möjligheten att importera dessa automatiskt, men då vi bara hade 130 stycken valde vi att migrera dem helt manuellt. I den nya butiken erbjuds vi möjlighet att jobba med HTML för kategoribeskrivningarna vilket gjorde att vi ändå ville gå igenom dem manuellt för att se vilka delar som skulle formatteras. Det handlade dessutom bara om en par timmars jobb att flytta över informationen.

Tack vare att man styr adressen själv på hur kategorin ska exponeras använde vi precis samma URL på kategorierna som de haft i Prestashop vilket gör att vi inte hade behov av att göra några redirects.

Vi förde en logg över de gamla identiteterna i Prestashop mot de nya i Kodmyran för att vid ett senare tillfälle kunna knyta produkter till rätt kategori.

Produkter

Produkterna tillhör kärnan av det man säljer och det är viktigt att få med så bra information som möjligt. Vi skapade därför en egen exportrutin till Prestashop som exporterade i ett format som man direkt kan importera i Kodmyrans lösning. Här byggde vi en enkel CSV-export där produktdata för det som skulle konverteras fanns med. I detta steg exporteras inte produkternas attribut.

Exporten kördes sedan flera gånger där vi vid varje körning tog in fler kolumner i importen bara för att verifiera att allt fungerade bra och att allt hamnade på rätt plats. För att inte riskera att förstöra något i den ”skarpa” butiken hade vi under en period kvar en demobutik att testa importera data i. Mycket användbart och smidigt för att inte råka göra fel.

Hemmakategori i Prestashop importerades via denna fil mot en kategori i den nya butiken. Här använde vi mappningstabellen från steget innan för att koppla produkten mot det nya kategori-idt.

Det knepigaste var att lyckas med att få ut HTML på rätt sätt så att den långa beskrivningen kunde importeras utan problem. På det korta beskrivningsfältet skulle vi dessutom gå från HTML till ren text. Här uppstod en del fel med vissa tecken och vi har manuellt jobbat på att rensa bort frågetecken som uppkommit i vissa texter.

När väl importen var på plats pausade vi allt utom akuta uppdateringar av produktdata för återstoden av konverteringstiden för att inte behöva underhålla data i flera system. Det var lite trist då vi hade en hel del nyheter som bara låg och väntade på att läggas ut till försäljning.

Bilder

I Prestashop ligger bilderna kopplat mot de produkter de tillhör. Dessa bilder följer dock en logik där de hamnar under img/p och sedan heter produktnummer, ett minustecken och sedan ett löpnummer. Vi exporterade dessa bilder via exportrutinen så det skulle gå att koppla på bilden mot en relativ sökväg då man i Kodmyran jobbar med filer.

Bilderna exporteras i en struktur efter varumärke/ps/produktnamn-artikelnummer.jpg så att det skulle vara enkelt att koppla upp bilden vid importtillfället. Vi hade självklart här kunnat använda bilderna i originalformat som vi lagrat dem, men för att inte riskera att göra några fel med vilken bild som är kopplad till produkterna så ansåg vi att Prestashop hade bäst data.

Exporten av bilder från Prestashop gjordes enligt följande:

  1. Exportera data i CSV-formatet.
  2. Öppna CSV-filen och skapa en formel i Excel för att köra ”wget” på filerna så de kan laddas ner via en scriptfil.
  3. Kör scriptfilen och ladda ner bilderna i originalstorlek.
  4. Använd Irfanview för att tillverkare för tillverkare skala ner bilderna till 1000×1000 pixlar som maximal storlek.
  5. Ladda upp filerna till bildstrukturen hos Kodmyran.

Därefter körde vi kopplingar genom import av CSV-filen med produktdata. Man kan importera kopplingar mot flera bilder samtidigt, men vi gjorde dessa kopplingar manuellt då det bara var 30 produkter som hade fler än en bild.

Den externa adressen för nästan alla produkter kunde vi behålla från Prestashop. Adresserna i Prestashop innehåller däremot EAN-koden, vilket skapar rätt långa adresser. På ett 20-tal blev adressen för lång och vi fick skapa 301-redirect för dessa specifika. Vilka som hade för lång adress räknade vi enkelt ut via en längd-formel i Excel och kunde då också generera .htaccess-rader för dessa specifika redirect.

Bloggar och texter

Här saknades det enkla importverktyg för att läsa in data på ett enkelt sätt. Därför beslutade vi även här att köra copy-paste-metoden. Det handlade om cirka 80 blogginlägg och 10 textsidor. Det var också bara frågan om en par timmars jobb, så här körde vi copy-paste och hade fixat det på några kvällar.

Det som fick hanteras manuellt här var bilder kopplade mot bloggtexter och informationstextern. Vi laddade ner dessa via en plugin till webbläsaren och laddade sedan upp den i nya butiken i en alternativ struktur med bilder i målformatet direkt. Därefter fick vi gå in på varje inlägg och koppla upp rätt bild.

Här vet vi om att det uppstått en del fel på både bilder och länkar, men prioriteringen har varit att de viktigaste texterna (ordervillkor, om oss etc) och mest besökta bloggposterna var korrekta.

Adresserna på bloggposterna fick bli desamma som tidigare.

Det som inte var klockrent att migrera var bloggkategorier och en förstasida för bloggen, då både kategoriverktyg och taggning saknades. Här blev det en halvmanuell sida där man kan lyfta fram blogginlägg att visa upp och en lista över samtliga blogginlägg längre ner som en rak lista. Inte helt optimalt, men det får rättas längre fram.

För bloggen saknades funktionalitet för att koppla produkter till blogginlägg, men detta kunde med lite klurande och några rader programkod i mallen implementeras av oss själva. Mycket smidigt!

Kopplingar mellan kategori och produkt

Vi har några olika alternativa strukturer för att navigera fram till samma produkt från några olika vyer. Dessutom har vi kategorier för toppsäljare och fyndhörnan som behövde fyllas med data.

Här gjorde vi en enkel SQL där vi exportera produktnummer och kategori-id för alla kategorier där produkten ingår. Kategori-id var den nya butikens identitet och en enkel excelformel användes för att översätta från gamla identiteter till nya via mappningstabellen från kategoriskaparsteget.

Kunder

Att importera kunder var något vi gjorde natten innan det var dags att gå live med den nya butiken. Från Prestashop kombinerade vi exporten av kunddata som kundregister och adressregister med den senast skapade leveransadressen.  Flagga med prenumeration på nyhetsbrev ingick också i exporten.

Order och orderrader

Dessa går också att importera i den nya lösningen, men det har vi ännu inte konverterat. Hade tänkt göra det och vi får se om det blir gjort, eller om orderhistoriken helt enkelt får ligga kvar i det gamla systemet.

Hur gick det då?

All form av migrering är klurigt att lyckas bra med. Vi lyckades väl inte perfekt, men det gick på det hela sett fantastiskt smidigt att migrera till Kodmyran. Det märks verkligen att de jobbat med att göra det smidigt. För dem som kanske inte har en lika stor verktyglåda som jag att klippa och klistra ihop kod med, har de några paket där de hjälper till att flytta data.

Nästa avsnitt

I nästa avsnitt tänkte jag berätta lite kring hur vi tänkte med mallarna för butiken och varför vi valde att inte gå all-in med en professionell design. Stay tuned!

Den nya ehandelsplattformen blev…

…efter en hel del utvärderande, funderande och verifiering mot kravspecifikationen blev den lösning vi fastnade för allra mest lösningen från Kodmyran. Länge stod vi och vände och vred de olika alternativen mot varandra och de alternativ vi in i det sista stod mellan var:

  • Att köra vidare med open source och gå in med Magento.
  • Att investera tid och kraft i att uppgradera vår Prestashop mot senaste versionen
  • Att välja Wikinggruppen för att man får en lösning som tilltalar plånboken och det ingår en professionell design
  • Att välja den lösning från Kodmyran som är vi under utvärderingen fastnade för då den förutom alla butiksfunktioner även har ett bra stöd för inköpshantering

Varför gillade vi då Kodmyrans lösning bäst?

Det kanske tyngsta argumentet är att den kändes rätt från början. Magkänslan är viktig för hur väl man kommer trivas med lösningen och med en god ingångskänsla finns bra förutsättningar för att lyckas väl i genomförandet av projektet.

Det som också väger otroligt tungt är svaren från supporten. Vi testade som jag skrev i tidigare inlägg att skicka frågor till supporten. Av Kodmyran fick vi alltid förstklassiga svar som innehöll mycket erfarenhet och med en känsla av att de kom med motförslag om de frågor jag skickade hade en erfarenhetsmässigt bättre implementationsteknik.

På backendsidan för den som ska hantera sin butik fanns det några saker som utmärkte sig:

  • Import och export av data är enormt smidigt. Exportera – efterbehandla – importera. Supersnyggt!
  • Flera olika textfält för att beskriva sina produkter. Vi kan t.ex. automatisera produktspecifikationerna via vår masterkatalog för artikelregistret där alla egenskaper redan finns.
  • Enkelt att skapa nya produkter. Bara några fåtal obligatoriska fält och så är man igång. Fylla på senare.
  • Flödet för att packa och skicka är mycket bra. Integrationen med Klarna funkar finfint för aktivering av fakturor.
  • SEO-taggning tydlig och möjlig att fylla på med standardvärden om man inte fyllt i något.
  • Bra möjlighet att ha massvis med information i butiken med olika paneler som kan användas som information om t.ex. specifika typer av produkter.
  • Snygga och prydliga utskrifter.
  • Ekonomisk rapportering med dagsavslut och all information som behövs för att bokföra.
  • Enkelt att sälja på Fyndiq och Tradera direkt i gränssnittet utan att riskera att man har fel lagersaldo någonstans.
  • Att vi kommer kunna behålla samma adresser till nästan alla sidor och därmed inte tar lika stor risk som om vi fått bygga redirects på att sidorna flyttat.

På frontendsidan finns det också några saker vi gillar:

  • Mallhanteringen är enkel att jobba med för den som är van att jobba med en butiksplattform. Ingen editor som döljer inställningar utan äkta HTML-mallar. Man kan ha flera parallella mallar och alltså arbeta fram den kommande designen helt utan att störa det som rullar i drift.
  • Smidigt flöde för betalningar. Här har man också själv möjlighet att bygga en riktigt bra kassa, något vi kommer titta på men ej fixa absolut från början.
  • Hastigheten. Butikerna är snabba och smidiga.
  • Möjligheter att direkt hantera nyheter, kategorier, varumärken, bästsäljare, relaterade produkter, tillbehör och sådant som andra köpte.

För programmeraren och den som ska integrera gillar vi:

  • Att det finns ett API som innehåller det mesta man kan behöva för att integrera övriga applikationer med nätbutiken.
  • Att det finns bra funktioner att ta ut XML-filer direkt i webbgränssnittet som kan laddas in i andra system.
  • Att man själv kan påverka hur mallarna fungerar och inte är styrd exakt efter hur det ser ut i standardmallarna.

Vad var det som inte var lika bra?

Allt är givetvis inte alltid bra med en lösning. Hade vi funnit en lösning som inte hade några brister hade vi ju inte behövt tveka. Därför tänkte jag också presentera några av de saker som andra leverantörer hade bättre möjligheter till.

  • Att design inte ingår. Här får man möjligheter genom att köpa ett färdigt tema till en opensourcelösning eller välja en leverantör som innehåller en del designarbete och detta var ett av de områden där andra var starkare. Man får dock med ett helt gäng olika standardmallar att utgå ifrån när man bygger sin egen lösning hos Kodmyran.
  • Vi har vant oss vid ganska standardiserade funktioner för sökning och filtrering av produkter via kategoriträd. Hos Kodmyran får man enklare träfflistor där man vid avancerad sökning får artikelnummer, benämning, lagersaldo och pris. När man jobbar med nya produkter är det aldrig fel med en bild.
  • Bildhanteringen känns lite begränsande i och med att man får lägga upp koppling mot bilder en och en i gränssnittet där det krånglar en del med katalogstrukturer och förhandsgranskning. Finns dock goda möjligheter att köra in dessa via import i stället.
  • Att sökningen inte hanterar sökning under tiden man skriver med Ajax som är standard för de flesta andra lösningar.
  • Att vissa funktioner kräver enterpriseversionen och att det då gärna drar iväg i kostnad. Nu beslutade vi oss för att köra utan attributhanteringen och sköta detta via specifikationsfältet och genom att bygga alternativa kategoristrukturer.

Implementationstiden

Då vi som alltid är sent ute och är mitt inne i vår del av året när försäljningen är rätt starkt så är det en jättestor risk att byta nätbutik mitt uppe i pågående försäljning. Planen var då att innan den 15:e november vara igång med den nya nätbutiken och alltså klarar implementationen på motsvarande 45 dagar. För den som inte gjort ett IT-projekt kan man tycka att detta låter som eoner av tid, men för den som varit inblandad i ett liknande projekt vet att det är en mycket kort projekttid.

I verkligheten så driftsatte vi butiken den 4:e november, alltså 10 dagar före tidplan och det är bloggen som inte hunnit bli skriven i takt med projektet.

Nästa avsnitt

I nästa avsnitt kommer jag att skriva hur vi tänkte med att flytta över informationen från vår Prestashop till Kodmyran och vilka val som gjordes kring automatisk eller manuell hantering.

Kravspecifikationen när man ska byta e-handelssystem

Den som är helt nystartad inom e-handeln och kanske vill testa på det som ett sätt att driva upp ett företag eller komplettera sin annars så trista vardag med lite småföretagande har en stor utmaning framför sig. Här är det viktigaste att räkna ut hur man får in besökare i nätbutiken och hur man sedan får dessa att bli kunder. En riktigt svår övning vilket också gör att det både öppnar och stänger väldigt många nätbutiker varje år. När man då väljer e-handelssystem för denna typ av ”försök” är nog det viktigaste att hitta något som fungerar och gör att det går att sälja även om det inte är ett perfekt system att jobba med ur alla aspekter.

Den bistra sanningen man ska förbi är att en nystartad nätbutik kanske har en konverteringsgrad, alltså hur många procent av besökarna man lyckas sälja något till, på maximalt 1%. Det gör att man behöver 100 besökare för en försäljning och att jaga reda på 100 besökare är en tuff utmaning i sig. Går man på annonser gäller det i stället att man kanske får betala 2kr per klick och då kommer varje försäljning kosta 200kr. Med dessa fakta kommer det finnas ett ledord som måste gälla för en lyckad satsning:

LÅGA FASTA KOSTNADER

Det ger en möjlighet att utvärdera och bedöma om detta med e-handel är något att satsa på eller om man helt enkelt inte är rätt person i rätt bransch. Kanske valde man inte det som skulle säljas utifrån att man har ett passionerat intresse för det man ska sälja och då är det inte kul att sitta på dyra fasta kostnader och långa avtalstider.

Har du kommit förbi detta steg och ska titta på hur du växer din verksamhet ska du fortsätta läsa här, för här börjar det bli nya problem man ställs inför.

Kravspecifikationen

När försäljningen lite smått börjar rulla kommer det att dyka upp andra problem som lägger på punkter på en kravspecifikation. Här är några av de viktigaste sakerna i vår kravspecifikation för hur vi tar vår e-handel vidare till nästa nivå.

Hygienfaktorerna

Alla basfunktioner ska finnas för att bygga en modern e-handel. Kommer inte räkna upp alla, men här kommer ett gäng av de viktigaste:

  • Startsida som man själv kan styra över
  • Innehållssidor och bloggfunktionatlitet
  • Kategorisidor
  • Möjlighet för produkter att tillhöra flera kategorier
  • Stöd för att hantera tillverkare
  • Visa nyheter, bästsäljare etc
  • Bra kassa
  • Kundregister med möjlighet till att flagga med nyhetsbrev
  • Glömt lösenord och få ett nytt
  • Lagra lösenordet krypterat
  • Möjlighet att styra utseende på e-post och kvitton
  • Integration med fakturasystem och betallösningar för automatisk aktivering av fakturor från butiken
  • Möjlighet att integrera med fraktsystem för att skicka fraktbokningar
  • Möjlighet att hantera attribut
  • Möjlighet att hantera flera butiker i samma gränssnitt

Spara tid

När man ska packa order och har mer än 1-2 order på en kväll att hantera kan det börja bli en hel del manuell hantering för att göra pappersarbetet kring hanteringen av order. Det handlar för oss om att:

  • Skriva ut plocklista
  • Aktivera faktura om man valt att betala med faktura. Här måste vi även gå in och ändra varulistan på varje faktura pga dålig integration mellan nätbutiken och Klarna för att artikelnummer blir rätt.
  • Hitta produkterna på lagret
  • Packa
  • Väga försändelsen
  • Boka frakt
  • Rapportera som skickad
  • Lägga in kollinummer

Allt som allt innebär denna hantering väldigt många klick för oss och det tar i dagsläget 8 minuter att hantera varje order.

Ett mycket viktigt moment för oss är att förenkla denna process och dra ner antalet klick. Målet är att kunna göra samma sak på 4 minuter.

Hjälpa kunden föreslå alternativa produkter och tillbehör

Vi säljer produkter som kan användas tillsammans med andra produkter. Dessa passar inte alltid ihop med allt och när man valt en produkt kan man vilja föreslå andra produkter som alternativ med liknande egenskaper baserat på vår erfarenhet och inte nödvändigtvis sådana som är kopplade bara för att de ligger i samma kategori. Denna hantering behöver då kunna göras både automatiskt och manuellt.

Tillbehör är inte samma sak som relaterade produkter och dessa behöver också kunna kopplas på produktnivån. Vi behöver bland annat kunna föreslå dimmers eller transformatorer till de lampor som kräver sådana tillbehör. Det är nästan omöjligt för en kund att annars välja rätt och är det svårt handlar man gärna hos någon annan.

Det är förvisso skoj med en funktion för att visa vilka produkter kunder som köpte denna också köpte, men i fallet med kombinationer kan denna information vara missledande, så vi kommer från början inte ha med en sådan funktion.

Möjlighet att bygga enkel kassa

Under den tid vi haft vår nätbutik öppen har det hänt en hel del med hur man genomför ett köp i kassan. Saker som att fylla i adressuppgifter genom att hämta adress via personnummer är något man måste ha idag. Det ska också gå att anpassa kassan över tiden för att fungera både för vanliga datorer och mobila enheter.

Testa, testa, testa, mäta, mäta, mäta

Just att få besökarna att bli kunder är något av det svåraste man kan ägna sig åt. Hur man gör är nog något man kan ha vissa generella regler kring, men kommer också vara koppla till respektive butik med sitt utbud. Här behöver det finnas stöd för att testa olika saker under en period mot en grupp användare och en annan sak mot en annan grupp. Det brukar kallas för A/B-testning och man kan sedan mäta hur resultatet blir när tillräckligt många har fått se respektive modell.

Eget innehåll

Alla som testat sökmotoroptimering SEO vet att det som gäller i början av 2012 kan vara helt felaktigt 2013. Något som aldrig kommer vara fel är att ha bra textinnehåll i sin butik som lockar besökarna att handla för att de hittar bra fakta i butiken. Vi har arbetat rätt hårt mot att knyta ett bra innehåll med produktbeskrivningar och kommer fortsätta ännu mer med att skapa bättre kategoribeskrivningar. Här har vi upplevt begränsningar med Prestashop där det krävts ytterligare programvara och som programmerare fastnar man givetvis här för att tiden går till annat än att fixa med programvaran…

Möjlighet att följa med i framkanten på utvecklingen

När man kört med Open Source är man också väl medveten om att ingenting i form av nya funktioner kommer till en per automatik. Nya saker kräver åtgärder och är man själv tekniskt insatt håller man butiken fräsch och uppdaterad. Har man beroenden till externa moduler (vilket då krävs för att få den funktionalitet man är ute efter) och man får då ett beroende som gör det knepigt att uppgradera. Väljer man att hyra sin lösning får man bättre möjligheter att följa med i utvecklingen som plattformsleverantören jobbar med eftersom det är de som har kontroll på all kod till skillnad när hela världen kan skapa olika moduler och den enskilde handlaren kan plocka ihop en helt unik mix som ingen annan kör.

Har man all tid i världen och tycker detta är superskoj kan man nog få en riktigt bra lösning och då väljer man gärna Magento, Prestashop eller Opencart. Är man som jag själv händig med tekniken men gärna väljer att spendera tid med familjen i stället för att leta beroenden mellan olika moduler så hamnar det om att göra det bästa med den tid man har tillgänglig.

Supporten är viktig

Under tiden man bygger upp sin nya butik kommer tillgång till support vara livsnödvändig. Här vill man ha en organisation att jobba mot som förstår vad man säger och där det liksom ska finnas en naturlig fallenhet för att man gillar sin leverantör. Man kommer troligtvis att ha en del med denna leverantör att göra framöver om allt går som det ska. Vi har testat supporten hos samtliga leverantörer som utvärderats och med olika resultat. De flesta manövrerade ut sig själv på ”kuggfrågan” jag skickat in och frågat en motsägelsefull fråga kring en funktion jag redan vet hur den fungerar och utvärdera svaret.

Import och export av data

Då vi jobbar med flera försäljningskanaler, ett centralt artikelregister som inte ligger i nätbutiken och har en stor erfarenhet kring att masshantera produktdata måste det gå smidigt att ladda in och ur data i systemet även efter att man gjort den initiala konverteringen. Här funkar både Excel och XML men gärna textformatet CSV så det är lätt att utveckla mot.

API, programmeringsgränssnitt

Då vi har en lagerbutik med kassasystem måste man kunna skicka transaktioner mellan dessa. Att vi dessutom håller på att utveckla ett PIM-system (Product Information Management) som Open Source som kommer att släppas inom en tidsram på 20 år så kom behövs det möjligheten att testa olika kopplingar mot systemet i nätbutiken. Det är inget vi kommer använda från dag ett, men det kommer krävas inom en framtid så här kvalar flera leverantörer in på kravet.

Ha en bra känsla för lösningen

Det ska kännas bra att jobba i butiken. Det ska kännas bra att bygga mallarna och upplevelsen för slutanvändaren. Allt behöver inte vara perfekt, men känslan ska vara den rätta när man ser till helheten.

Valet av system

I nästa inlägg kommer jag berätta om vilket system vi valt och varför vi gjort det. Skicka gärna in en kommentar om du tycker att jag missat något viktigt.