Alle handleidingen
GevorderdMagento 2.4.x45 minuten

Magento 2 koppelen met externe systemen (ERP, PIM, fulfilment)

Een praktische gids voor het integreren van Magento 2 met ERP-systemen, PIM-platforms en fulfilment-oplossingen.

Coding.nl5 views
Magento 2 koppelen met externe systemen (ERP, PIM, fulfilment)

Waarom integraties essentieel zijn

Een webshop staat niet op zichzelf. Je hebt te maken met:

  • ERP voor boekhouding en orderbeheer
  • PIM voor productinformatie
  • WMS/Fulfilment voor warehouse operaties
  • Payment providers
  • Marketing tools

Handmatig data overzetten tussen systemen schaalt niet. Integraties automatiseren deze datastromen.

Integratie-architectuur kiezen

Direct vs Middleware

Directe koppeling:

Magento communiceert rechtstreeks met het externe systeem.

  • ✓ Eenvoudiger te implementeren
  • ✓ Minder componenten
  • ✗ Tight coupling
  • ✗ Moeilijker te onderhouden
  • ✗ Elk systeem vereist custom code

Via Middleware (iPaaS):

Een tussenlaag (Alumio, Channable, Make) orchestreert de datastromen.

  • ✓ Loose coupling
  • ✓ Centrale monitoring
  • ✓ Herbruikbare transformaties
  • ✓ Makkelijker nieuwe systemen toevoegen
  • ✗ Extra kosten
  • ✗ Extra complexiteit

Onze aanbeveling: Voor enterprise setups en meerdere integraties is middleware de betere keuze. Voor eenvoudige, single-purpose koppelingen kan direct prima werken.

Magento 2 API basics

REST API

Magento biedt een uitgebreide REST API voor alle standaard operaties:

  • Products: CRUD, inventory, media
  • Orders: Create, update, ship, invoice
  • Customers: CRUD, addresses, groups
  • Categories: CRUD, assignments

Endpoint structuur:

``

GET /rest/V1/products/{sku}

POST /rest/V1/products

PUT /rest/V1/products/{sku}

DELETE /rest/V1/products/{sku}

`

GraphQL API

Nieuwer en efficiënter voor frontend toepassingen:

  • Vraag alleen data op die je nodig hebt
  • Minder requests nodig
  • Sterk getypeerd

API Authenticatie

Integration tokens (aanbevolen voor system-to-system):

  • Ga naar System > Integrations
  • Maak nieuwe integration
  • Wijs benodigde permissions toe
  • Activeer en bewaar tokens
  • OAuth (voor third-party apps):

    Complexer maar veiliger voor apps die namens users handelen.

    Admin/Customer tokens:

    Tijdelijke tokens, minder geschikt voor integraties.

    Synchronisatie strategieën

    Real-time vs Batch

    Real-time (event-driven):

    • Trigger bij wijziging in bron-systeem
    • Data direct beschikbaar
    • Hogere infrastructuur load
    • Complexere error handling

    Batch (scheduled):

    • Periodieke sync (elk uur, dagelijks)
    • Efficiënter voor grote volumes
    • Data niet direct up-to-date
    • Eenvoudiger error handling

    Hybride aanpak:

    • Kritieke data (orders, voorraad) real-time
    • Minder kritieke data (product content) batch

    Push vs Pull

    Push: Bronsysteem stuurt data naar Magento

    Pull: Magento haalt data op uit bronsysteem

    De beste aanpak hangt af van welk systeem de "source of truth" is voor welke data.

    ERP integratie implementeren

    Typische datastromen

    Magento → ERP:

    • Orders (na betaling of altijd)
    • Klantgegevens (bij registratie/wijziging)
    • Returns/credit memos

    ERP → Magento:

    • Voorraad updates
    • Prijzen (indien ERP leading is)
    • Orderstatus updates
    • Factuur/pakbon data

    Order export voorbeeld

    `php

    // Observer bij order placement

    public function execute(Observer $observer)

    {

    $order = $observer->getEvent()->getOrder();

    // Transform naar ERP formaat

    $erpOrder = $this->orderTransformer->transform($order);

    // Queue voor async processing

    $this->messagePublisher->publish('erp.order.export', $erpOrder);

    }

    `

    Voorraad import voorbeeld

    `php

    // Console command voor batch import

    public function execute(InputInterface $input, OutputInterface $output)

    {

    // Haal data uit ERP

    $stockData = $this->erpClient->getStockLevels();

    foreach ($stockData as $item) {

    // Update MSI source item

    $sourceItem = $this->sourceItemFactory->create();

    $sourceItem->setSku($item['sku']);

    $sourceItem->setSourceCode('default');

    $sourceItem->setQuantity($item['quantity']);

    $sourceItem->setStatus($item['quantity'] > 0 ? 1 : 0);

    $this->sourceItemsSave->execute([$sourceItem]);

    }

    }

    `

    PIM integratie implementeren

    Wat synchroniseer je?

    PIM → Magento:

    • Product attributen (naam, beschrijving, specs)
    • Afbeeldingen en media
    • Categorie toewijzingen
    • Vertalingen

    Magento → PIM (optioneel):

    • Sales data voor analytics
    • Review/rating data

    Product import strategie

  • Delta sync: Alleen gewijzigde producten
  • Timestamp tracking: Bijhouden wanneer laatst gesyncet
  • Checksum vergelijking: Hash van data vergelijken
  • Attribute mapping

    PIM attributen matchen niet altijd 1:1 met Magento:

    `php

    $attributeMapping = [

    'pim_product_name' => 'name',

    'pim_description_long' => 'description',

    'pim_description_short' => 'short_description',

    'pim_brand' => 'manufacturer',

    // Custom attributes

    'pim_material' => 'material',

    'pim_care_instructions' => 'care_instructions',

    ];

    `

    Fulfilment integratie

    Typische datastromen

    Magento → WMS:

    • Orders (voor picking)
    • Product master data
    • Returns voor verwerking

    WMS → Magento:

    • Shipment confirmaties
    • Tracking informatie
    • Voorraad updates
    • Return status

    Shipment creatie voorbeeld

    `php

    // Webhook ontvangen van WMS

    public function processShipmentConfirmation(array $data)

    {

    $order = $this->orderRepository->get($data['order_id']);

    // Create shipment

    $shipment = $this->shipmentFactory->create($order);

    // Add tracking

    $track = $this->trackFactory->create();

    $track->setCarrierCode($data['carrier']);

    $track->setTitle($data['carrier_name']);

    $track->setTrackNumber($data['tracking_number']);

    $shipment->addTrack($track);

    $this->shipmentRepository->save($shipment);

    // Send shipping email

    $this->shipmentNotifier->notify($shipment);

    }

    `

    Error handling best practices

    Retry mechanisme

    Niet elke API call slaagt direct. Implementeer retries:

    `php

    public function callWithRetry(callable $operation, int $maxRetries = 3)

    {

    $attempt = 0;

    $lastException = null;

    while ($attempt < $maxRetries) {

    try {

    return $operation();

    } catch (TemporaryException $e) {

    $lastException = $e;

    $attempt++;

    sleep(pow(2, $attempt)); // Exponential backoff

    }

    }

    throw $lastException;

    }

    ``

    Dead letter queue

    Berichten die na X retries nog falen, verplaats naar dead letter queue voor handmatige analyse.

    Logging en monitoring

    Log elke integratie actie:

    • Timestamp
    • Richting (in/uit)
    • Systemen betrokken
    • Payload (geanonimiseerd indien nodig)
    • Resultaat (success/failure)
    • Error details

    Veelvoorkomende valkuilen

    1. Geen idempotency

    Als een bericht twee keer wordt verwerkt, moet het resultaat hetzelfde zijn. Check altijd of een order/product al bestaat voor je aanmaakt.

    2. Tight coupling op data formaat

    Externe systemen wijzigen hun API. Bouw transformaties flexibel zodat kleine wijzigingen niet alles breken.

    3. Geen rate limiting

    API's hebben limieten. Respecteer deze en bouw throttling in je sync processen.

    4. Synchrone verwerking

    Zware operaties in synchrone requests maken je shop traag. Gebruik queues.

    5. Geen monitoring

    Als een integratie stopt met werken, moet je dit snel weten. Implementeer health checks en alerts.

    Testing strategie

    Unit tests

    Test transformaties en business logic geïsoleerd.

    Integration tests

    Test tegen sandbox/staging omgevingen van externe systemen.

    End-to-end tests

    Volledige flow testen: order in Magento → verwerking in ERP → voorraad update terug.

    Monitoring in productie

    Continu monitoren van:

    • Sync lag (hoe oud is de data?)
    • Error rates
    • Throughput
    • API response times

    Conclusie

    Integraties zijn complex maar essentieel. Plan zorgvuldig, kies de juiste architectuur, en investeer in monitoring en error handling. Een goed geïmplementeerde integratie bespaart uren handmatig werk en voorkomt fouten.

    Deel deze handleiding:

    Info

    Niveau
    Gevorderd
    Duur
    45 minuten
    Magento
    2.4.x
    PHP
    8.1+
    Views
    5

    Vereisten

    • Toegang tot Magento 2 admin panel
    • Basis begrip van API's en integraties
    • Kennis van je ERP/PIM systeem

    Wat je leert

    • Integratie-architectuur en best practices
    • Magento 2 REST en GraphQL API basics
    • Synchronisatie strategieën (real-time vs batch)
    • Error handling en monitoring opzetten
    • Veelvoorkomende valkuilen vermijden

    Categorieën

    Hulp nodig?

    Kom je er niet uit? Onze Magento experts helpen je graag.

    Neem contact op

    Professionele hulp nodig bij Magento?

    Onze Magento experts bouwen, optimaliseren en onderhouden je webshop.