SFTP-integratie: bestanden uitwisselen

Documenten uitwisselen via SFTP: From SFTP (pull), To SFTP (push), mappenstructuur en configuratie.

Niet elke integratie verloopt via een directe API-koppeling. Voor systemen die werken met bestandsuitwisseling biedt de PSB SFTP-integratie. De PSB haalt periodiek bestanden op van je SFTP-server (From SFTP) of plaatst ontvangen documenten op je SFTP-server (To SFTP). Beide flows worden geconfigureerd via SFTP-hooks.

Je kunt een SFTP-verbinding aanmaken via het platform onder Verbindingen > Nieuwe Algemene verbinding > SFTP Connector. De verbindingssleutels die je hier genereert heb je later nodig bij de hook-configuratie.

From SFTP (pull)

Met From SFTP haalt de PSB periodiek bestanden op van jouw SFTP-server en verwerkt ze als documenten. Dit is handig als je bronsysteem bestanden exporteert naar een map op een SFTP-server, bijvoorbeeld facturen in UBL- of XML-formaat.

Mappenstructuur

From SFTP werkt met vijf mappen op je SFTP-server:

MapFunctiereadDirectoryHier plaatst je systeem de bestanden die de PSB moet ophalenpendingDirectoryBestanden die de PSB aan het verwerken is, worden hierheen verplaatstduplicateDirectoryBestanden die al eerder zijn verwerkt door de PSB (duplicaatdetectie op basis van document-hash)successDirectorySuccesvol verwerkte bestandenerrorDirectoryBestanden die niet verwerkt konden worden

De PSB controleert standaard elke 15 minuten of er nieuwe bestanden in de readDirectory staan. Dit interval is configureerbaar.

Hook-configuratie

Een From SFTP hook heeft de volgende action:

sftp://gebruiker:wachtwoord@host:poort?readDirectory=/upload&pendingDirectory=/pending&duplicateDirectory=/duplicate&successDirectory=/success&errorDirectory=/error#md5-fingerprint

De hook moet ook een publishTopic bevatten dat aangeeft hoe de opgehaalde bestanden moeten worden verwerkt, bijvoorbeeld SendInvoice voor het verzenden van facturen. Naast het primaire publishTopic zijn ook de bijbehorende supporting topics vereist, zodat de hook bestanden naar de juiste statusmap kan verplaatsen:

PublishTopicVereiste supporting topicsSendInvoiceInvoiceSent, InvoiceSentErrorReceiveInvoiceInvoiceReceived, InvoiceReceivedError

Bestanden met een tussentijdse *Retry-status (bijv. InvoiceSentRetry) blijven in de pendingDirectory totdat een definitieve status volgt.

{
  "action": "sftp://user:pass@sftp.bedrijf.nl:22?readDirectory=/out&pendingDirectory=/out/pending&duplicateDirectory=/out/duplicate&successDirectory=/out/success&errorDirectory=/out/error#aa:bb:cc:dd:ee:ff",
  "topics": [],
  "publishTopics": ["SendInvoice"]
}

Bij elke poll controleert de PSB de readDirectory, verplaatst bestanden naar pending, verwerkt ze en plaatst ze daarna in success of error. Bestanden die al eerder zijn verwerkt, worden naar de duplicateDirectory verplaatst.

To SFTP (push)

Met To SFTP plaatst de PSB ontvangen documenten automatisch op jouw SFTP-server. Dit is ideaal als je systeem bestanden uit een map verwerkt in plaats van via een API-webhook.

Configuratie

Bij To SFTP heb je alleen een inboxDirectory nodig:

{
  "action": "sftp://user:pass@sftp.bedrijf.nl:22?dirs=/inbox#aa:bb:cc:dd:ee:ff",
  "topics": ["InvoiceReceived"]
}

Elk ontvangen document wordt als bestand in de inboxDirectory geplaatst. Je kunt optioneel een targetDocumentTypeId opgeven om documenten automatisch te laten transformeren naar een specifiek formaat voordat ze op de SFTP-server worden geplaatst.

MD5-fingerprint

Beide SFTP-flows gebruiken een MD5-fingerprint voor serververificatie. De fingerprint staat achter het #-teken in de hook-action en zorgt ervoor dat de PSB alleen verbinding maakt met de juiste SFTP-server. Dit voorkomt man-in-the-middle aanvallen.

Je vindt de MD5-fingerprint van je SFTP-server in de serverconfiguratie of door verbinding te maken via een SFTP-client. Het formaat is een reeks hexadecimale paren gescheiden door dubbele punten, bijvoorbeeld aa:bb:cc:dd:ee:ff:00:11:22:33:44:55:66:77:88:99.

SFTP-aflevering en ERP-ingestie zijn aparte hooks

Een SFTP-aflevering en een daaropvolgende ERP-ingestie (bijvoorbeeld To-SFTP richting Unit4 ERP CR) zijn twee losse, onafhankelijk werkende hooks -- geen enkele keten met één gedeelde status.

Een document dat in eConnect als "gedownload" staat, bevestigt dat de afleverende hook het bestand heeft opgehaald of geplaatst. Het zegt op zichzelf niets over of het ERP het bestand daarna succesvol heeft ingelezen.

Voor elke hook afzonderlijk is er monitoring via de topics HookSentError (definitief falen) en HookSentRetry (tussentijdse herpoging). Richt per hook een monitoring-actie in op deze topics via een mailhook of een secundaire webhook. Zo krijg je proactief een melding bij een mislukte aflevering of ingestie aan de betreffende kant.

Praktijkvoorbeeld

Een organisatie die facturen verstuurt vanuit hun ERP-systeem en ontvangen facturen wil importeren:

  1. Verzenden (From SFTP): het ERP-systeem exporteert UBL-facturen naar /sftp/outbox. De PSB haalt ze elke 15 minuten op en verstuurt ze via Peppol.
  2. Ontvangen (To SFTP): de PSB plaatst ontvangen facturen in /sftp/inbox. Het ERP-systeem leest de map periodiek uit en importeert de documenten.

Beide flows draaien onafhankelijk van elkaar en kunnen afzonderlijk worden geconfigureerd.

SFTP-integratie wordt in de praktijk veel ingezet bij koppelingen met Unit4 ERP CR en ERP7, waar bestandsuitwisseling via een SFTP-map de standaardmethode is voor het uitwisselen van factuurdocumenten.

Aandachtspunten

Zorg ervoor dat de SFTP-gebruiker schrijfrechten heeft op alle geconfigureerde mappen. De PSB moet bestanden kunnen verplaatsen tussen de mappen. Controleer ook of de firewall van je SFTP-server inkomende verbindingen toestaat vanaf de eConnect IP-adressen.

Het pull-interval van 15 minuten is standaard. Als je een korter of langer interval nodig hebt, neem dan contact op met TechSupport.

Veelgestelde vragen
Waarvoor dient de MD5-fingerprint achter het #-teken in de SFTP hook-action?

De fingerprint hoort bij de host van je SFTP-server en zorgt dat de PSB alleen verbindt met de bedoelde server. Zo beperk je het risico op man-in-the-middle-aanvallen. Het formaat is hexadecimale paren gescheiden door dubbele punten, zoals in de documentatie beschreven.

Wat is het verschil tussen From SFTP en To SFTP?

Met From SFTP haalt de PSB periodiek bestanden van jouw mappen op en verwerkt ze als documenten (bijvoorbeeld facturen exporteren naar readDirectory). Met To SFTP plaatst de PSB ontvangen documenten in jouw inboxDirectory zodat jouw systeem ze uit een map kan inlezen in plaats van via een webhook.

Welke rechten moet de SFTP-gebruiker hebben?

De gebruiker moet op alle geconfigureerde mappen kunnen schrijven en bestanden kunnen verplaatsen, omdat de PSB bestanden tussen onder meer read, pending, success en error verplaatst. Controleer ook dat je firewall inkomende verbindingen vanaf de eConnect IP-adressen toestaat.

Een document staat als 'gedownload' in eConnect -- betekent dat ook dat het ERP het heeft ingelezen?

Nee. "Gedownload" bevestigt alleen dat de afleverende hook (To SFTP) het bestand heeft opgehaald of geplaatst op de SFTP-server. De ERP-ingestie daarna is een aparte, onafhankelijke hook. Richt voor elke hook afzonderlijk monitoring in via HookSentError en HookSentRetry om zeker te weten of ook de ERP-verwerking is geslaagd.


Meer weten over documentuitwisseling via de PSB? Bekijk het overzicht van multi-channel levering of lees hoe je webhooks instelt voor real-time notificaties.

Bekijk de API-documentatie