Magento og Dynamics NAV integrationer – API eller webservices?

Har du spørgsmål til os?

Ring på +45 28 91 27 23 eller send en mail til hermes@droppinstudio.dk

Hermes Honey-Bird Yokhana

Kontaktchef / Partner

ceo-img
Magento og Dynamics NAV integrationer – API eller webservices?

Vi har på det sidste fået en del henvendelser omkring Magento og NAV integrationer – altså forbindelser der mere eller mindre automatisk sørger for, at den data du har i Magento er synkroniseret med den data du har i NAV. Derfor synes vi, at det var på tide at skrive lidt mere om de forskellige måder, der kan laves Magento NAV integrationer på.

Det er klart, at det er smart, at den lagerstatus du har i Magento passer med den lagerstatus du har i NAV. Samtidig skal de ordrer, der placeres i webshoppen også kunne ses i NAV, så du ikke sælger produkter, du ikke længere har på lager eller ikke kan holde styr på, hvilke ordrer du har liggende.

 

Den simpleste måde at lave en integration er via CSV-filer, som flytter data fra det ene system til det andet. Men det kræver stadig en del manuelt arbejde, og vi vil jo gerne have, at systemerne synkroniserer automatisk.

Så her vil vi beskrive tre andre løsninger til at lave Magento og NAV integrationer:

  1. API, som er den gængse metode.
  2. Webservices, som er den smarteste måde.
  3. En kombination af de to.

api-vs-webservice-3 copy

API

API er en grænseflade der tillader forskellige stykker software at interagere med hinanden. Magento har en sådan grænseflade indbygget og giver derfor ERP software mulighed for at indlæse og udlæse data til og fra Magento.

Fordele
Ved at lave integrationen med udgangspunkt i en API løsning, er alt aktivitet initialiseret fra NAV. Magento reagerer først, når der sker noget i NAV. Når du eksempelvis sælger et produkt i NAV bliver det automatisk opdateret i Magento, og det er smart hvis du sælger mange produkter eksempelvis via telefon eller mail. Desuden er det en nem løsning, fordi det kræver minimal udvikling i Magento.

Ulemper
Med en standard API løsning er det begrænset, hvad Magento kan. Magento viser i princippet kun data fra NAV. Derfor kan Magento med sådan en løsning heller ikke ’spørge’ NAV om et produkt er på lager. Det er skidt, hvis du eksempelvis kun sælger unikke produkter eller har mange forskellige butikker, som sælger de samme produkter fra samme hovedlager. Magento ved i princippet ikke, om et produkt er på lager, før det potentielt kan være solgt.

Desuden er det vores erfaring, at al den custom udvikling, du skal have lavet i forbindelse med din Magento webshop, kræver væsentlig mere udvikling i både Magento og NAV, for at API’en kan håndtere den custom del. Det ville eksempelvis ikke være muligt at opdatere en kundes specifikke priser ved hvert login uden at udvide API løsningen i både NAV og Magento.

Det er heller ikke muligt at forespørge NAV i det øjeblik hvor der er behov for det. Så hvis du eksempelvis har en B2B shop, hvor forskellige kunder har forskellige leveringsvilkår og priser, der er afhængige af ordrepris og vægt, kan du ikke hente denne data efter behov. I stedet for at forespørge NAV efter behov, er det nødvendigt at udtænke alle mulige scenarier og gemme dem i Magento.

En API løsning kan altså være omsonst og tungt at arbejde med, fordi der overføres så meget data til Magento. Løsningen er derfor heller ikke særlig fleksibel, fordi det er defineret på forhånd, hvordan forbindelsen mellem NAV og Magento ser ud. Man kan ikke manipulere med dataene og det kan gå ud over performance. Det er vores erfaring fra tidligere projekter, at en sådan løsning er langsom fordi alle produktattributter skal overføres fra NAV til Magento for alle store views og fordi den NAV klient der benyttes bliver låst i al den tid, hvor produkterne udlæses.

Webservices

Webservices er generelt set en tjeneste, der giver adgang til at tilgå data på en webserver. Det er en service, som er tilgængelig på internettet og derfor kan den tilgås fra andre klienter andre steder på internettet. Klienten sender en besked og får svar fra serviceprogrammet. I dette tilfælde er Magento klienten og NAV udbyder webservicen.

Fordele
En integration baseret på webservices har uanede grader af fleksibilitet i forhold til manipuleringen af data i Magento. Det er i princippet kun Magento udviklerens kreativitet, der sætter grænser for, hvordan data kan og skal manipuleres.

Webservices er desuden en integreret del af NAV og virker derfor som en naturlig løsning i den henseende. Det er muligt selv at bestemme hvilke data, man vil opdatere, og man behøver kun at opdatere, når der sker ændringer. På den måde kan man skræddersy sin egen opdateringsproces.

Det er muligt for Magento at ’spørge’ til lagerstatus når som helst. Man vil derfor aldrig komme til at sælge produkter, som ikke er på lager. Desuden kan man manipulere med data både i NAV og Magento og på den måde tilgodese fleksibiliteten i begge systemer.

Der er derudover bedre performance på grund af skalerbarheden i forhold til en API løsning, fordi webservices med det rette setup er forberedt til at skalere både hardware og software.

Ulemper
Vores erfaring er, at webservice har klart flere fordele end ulemper. Dog kræver en integration baseret på webservices mellem NAV og Magento et lidt større budget, fordi løsningen kræver mere udviklingsarbejde. Det skyldes netop at både dit Magento bureau og din NAV-leverandør skal udvikle på løsningen.

Nogle gange kan man have behov for at opdatere sin webshop med frisk data. Eksempelvis hvis et produkt får en ny pris. NAV kan ikke selv opdatere prisen i webshoppen og man må derfor vente på, at webshoppen forespørger på prisen.

For at løse dette, kan man i webshoppen sætte forespørgselsintervallet lavt (f.eks. hvert femte minut) eller man kan gøre det muligt for NAV at ’bede’ Magento om at opdatere prisen for et specifikt produkt. Denne “tvang” af opdatering kan også implementeres, så opdateringen kan gennemtvinges fra Magentos administrationsområde.

Kombination af API og Webservices – Deling af initiativ

Det er vores erfaringer, at en kombineret løsning, hvor både NAV og Magento kan initialisere kontakten, er den bedste. Magento forespørger ved NAV efter behov, og eventuelt om natten ved større mængder data. NAV kan enten sende data til webshoppen gennem Magentos API eller ved at bede Magento om at gennemføre en specifik opdatering.

Dette setup muliggør at webshoppen og NAV begge er ude af sync i så kort tid som muligt.