# Leveranciersdata naar Ergonode, visueel gemapt

Ergonode werkt alleen met GraphQL, en elk attribuuttype heeft zijn eigen getypeerde mutatie. SDM Portal weet welke dat is, schrijft je varianten in de volgorde die Ergonode vereist, en herhaalt dezelfde regels op elk bestand dat die leverancier stuurt.

Webversie: https://sdmportal.com/nl/ergonode/

## De connectie

- **Protocol:** Alleen GraphQL, /api/graphql/
- **Authenticatie:** API-sleutel in een X-API-KEY-header
- **Structuur:** Template
- **Schrijven:** GraphQL-mutaties met alias, 25 operaties per request
- **Varianten:** Eerst simple products, dan het variable product met bindings
- **Delta sync:** Hash per schrijfoperatie

## Waar een Ergonode-leveranciersfeed echt vastloopt

### Elk type heeft zijn eigen mutatie

Text, numeric, select, multi select, unit, price en relation hebben elk een andere getypeerde mutatie nodig. Stuur je een waarde door de verkeerde, dan antwoordt Ergonode met een onbekende fout en geen enkel detail.

### Varianten hebben een volgorde nodig

De kinderen moeten bestaan voordat het variable product ze kan binden. Klopt de volgorde niet, dan mislukken de bindings.

### Status is een graaf, geen veld

Ergonode valideert workflow-overgangen aan de serverkant, dus je kunt niet zomaar de status zetten die je wilt vanaf waar het product nu staat.

## Hoe SDM Portal naar Ergonode schrijft

### Mapping per template

Kies het template en de attribuutrail beperkt zich tot de attributen daarvan. Templates hebben in de API geen weergavenaam, dus de picker toont de templatecode. De ingebouwde SKU zit niet in de attribuutstroom, dus er komt een veld esa_sku bij en je mapt SKU als elke andere kolom.

### Getypeerd schrijven, live opgezocht

Text, textarea en date gaan uit als een string, numeric, price en unit als een float, select als een optiecode, multi select als een lijst optiecodes en een relation als een lijst SKU's. Het type komt uit je live catalogus, niet uit de vorm van de waarde, dus een artikelnummer dat numeriek lijkt komt nog steeds als tekst aan.

### Waarden per locale

Locale is een eigenschap van de verbinding die je tekent. Drie omschrijvingskolommen vullen één attribuut in drie talen, en de runtaal bepaalt de standaard.

### Varianten met assen en bindings

Markeer een parent key, een of meer variantassen en de variant-SKU op bronkolommen. Eerst worden de simple products aangemaakt, daarna het variable product met zijn bindings, en dat is de volgorde die Ergonode vereist. Aswaarden die door een ValueMap gaan komen nog steeds uit op bindingcodes.

### Workflowstatus via het kortste pad

Omdat Ergonode de overgangsgraaf handhaaft, wordt het kortste pad van de huidige status van het product naar de status die je hebt gemapt berekend en stap voor stap gelopen, in plaats van in één keer gezet.

### Categorieën uit meerdere taxonomieën

Een flow kan meer dan één taxonomieknoop bevatten. Elke knoop mapt een bronwaarde naar een categorie, en een product krijgt de ontdubbelde verzameling van alles wat is opgelost, in één categorie-aanroep.

### Opties aanmaken en verrijken

Ontbrekende opties worden aangemaakt met een korte voorgestelde code in kleine letters, die je per waarde kunt aanpassen. Custom fields van een optie van het type text, textarea en rich text kunnen worden gevuld uit andere kolommen in dezelfde rij, zodat de lange onderhoudstekst in een custom field landt en de optie een leesbare naam houdt. Optienamen zijn gemaximeerd op 255 tekens.

### Nieuwe attributen vanuit de editor

Maak attributen van het type text, textarea, numeric, date, select, multi select, unit, price en relation aan vanaf het canvas. Ergonode heeft geen API om een attribuut aan een template toe te voegen, dus een aangemaakt attribuut geldt voor de hele instantie en je voegt het in Ergonode zelf aan het template toe. De editor vertelt je dat op het moment dat je er een aanmaakt.

### Batches die een foute cel overleven

Schrijfacties gaan uit als GraphQL-mutaties met alias, 25 operaties per request, met pacing. Eén geweigerde waarde kan een heel gebatcht document laten mislukken, dus een batch waarin elke operatie met dezelfde fout mislukte wordt operatie voor operatie opnieuw geprobeerd. Alleen de echte veroorzaker mislukt, en het validatiedetail van Ergonode zelf staat op de rij.

### Zachte fouten blijven zacht

Een waarde als nvt op een numeriek attribuut wordt overgeslagen met een waarschuwing die de SKU noemt. Een dubbele waarde op een uniek attribuut, zoals een gedeelde goederencode, wordt vastgelegd als overgeslagen in plaats van het product te laten mislukken. Een relatie naar een SKU die nog niet bestaat wordt uit die schrijfactie weggelaten en in de waarschuwing genoemd, zodat de rest van de relatie wel aankomt.

## Wat we naar Ergonode kunnen schrijven

Select en multi select worden gemapt op optiecodes, en ontbrekende opties kunnen worden aangemaakt en verrijkt. Een prijsattribuut is één float waarvan de valuta op het attribuut in Ergonode zelf is ingesteld, en een unit-attribuut leest zijn symbool van het attribuut.

- Tekst
- Textarea
- Numeriek
- Datum
- Select
- Multi select
- Unit
- Prijs
- Productrelatie
- Categorieën
- Workflowstatus
- Variantbindings

## Wat de Ergonode-connector nog niet doet

### Afbeeldingen, galerijen, bestanden (niet schrijfbaar)

Media-attributen zijn zichtbaar in de rail maar worden niet geschreven. Custom fields van een optie van het type afbeelding worden om dezelfde reden weggefilterd.

### Prijzen (één valuta)

Een Ergonode-prijsattribuut houdt één float en de valuta staat op het attribuut in Ergonode zelf. Valuta per verbinding, waarbij meerdere kolommen samenkomen in één collectie, is een Akeneo-functie.

### Grouping products (buiten scope)

Alleen simple en variable products. Grouping products worden niet aangemaakt.

### Een attribuut aan een template toevoegen (handmatige stap)

Ergonode heeft er geen API voor. Een attribuut dat je vanuit de editor aanmaakt bestaat voor de hele instantie, en je voegt het in Ergonode aan het template toe voordat het in de gescopete rail verschijnt.

### Optienamen boven 255 tekens (api-grens)

Ergonode weigert langere optienamen met een ondoorzichtige fout, dus namen worden afgekapt op 255. Zet de volledige tekst in een custom field van de optie.

### Templatenamen (cosmetisch)

De Ergonode-API geeft geen weergavenaam voor een template terug, dus pickers en waarschuwingen tonen de templatecode.

## FAQ

### Hoe maakt SDM Portal verbinding met Ergonode?

Ergonode biedt alleen GraphQL, op /api/graphql/. Je voegt de URL van de instantie en een API-sleutel toe, die als X-API-KEY-header wordt meegestuurd, en de connectie wordt met een live handshake gecontroleerd. De sleutel wordt versleuteld opgeslagen en gaat nooit mee in een geëxporteerde mapping.

### Kan SDM Portal omgaan met Ergonode-varianten?

Ja. Je markeert de parent key, de variantassen en de variant-SKU op bronkolommen. Eerst worden de simple products aangemaakt en daarna het variable product met zijn bindings, en dat is de volgorde die Ergonode vereist. Aswaarden die door een ValueMap lopen komen nog steeds uit op bindingcodes.

### Kan het de Ergonode-workflowstatus zetten?

Ja. Ergonode valideert statusovergangen aan de serverkant, dus SDM Portal berekent het kortste pad van de huidige status van het product naar de status die je hebt gemapt en loopt dat stap voor stap.

### Hoe laat één foute cel niet de hele batch mislukken?

Schrijfacties worden gebatcht als GraphQL-mutaties met alias, 25 operaties per request. Eén geweigerde waarde kan het hele gebatchte document laten mislukken, dus een batch waarin elke operatie met dezelfde fout mislukte wordt operatie voor operatie opnieuw geprobeerd. Alleen de echte veroorzaker mislukt, en de reden die Ergonode teruggaf staat op de rij.

### Pusht een tweede run alles opnieuw?

Nee. Elke schrijfactie wordt per operatie gehasht, dus een nieuwe run van een ongewijzigd bestand rapporteert de producten als ongewijzigd en schrijft niets. Er is een geforceerde volledige resync voor de keren dat je wel alles opnieuw wilt pushen.

## Aan de slag

Probeer 14 dagen gratis: https://app.sdmportal.com/signup?lang=nl

Andere PIM-systemen: https://sdmportal.com/nl/ergonode/ · https://sdmportal.com/nl/akeneo/ · https://sdmportal.com/nl/pimcore/

SDM Portal.
