Die wichtigste Entscheidung fällt vor der ersten Zeile Code: Die Website fragt
das ERP nicht bei jedem Seitenaufruf. Wir spiegeln die benötigten Daten im festen Takt in das
Datenmodell des CMS — als eigene Inhaltsart mit
eigenen Feldern, eigener URL und eigener Sortierung. Ausgeliefert wird danach aus dem eigenen
Bestand. Das hält die Seite schnell, macht sie unabhängig von der Erreichbarkeit des ERP und sorgt
dafür, dass ein Wartungsfenster in der Cloud kein leeres Produktverzeichnis produziert. Live geht
nur, was live sein muss — etwa eine Verfügbarkeitsprüfung direkt vor dem Absenden einer Bestellung.
Zuerst steht die Anmeldung. Für Integrationen, die ohne Nutzerinteraktion
laufen, nennt Microsoft den Client-Credentials-Flow: Im Microsoft-Entra-Mandanten wird eine
Anwendung registriert, sie erhält eine Anwendungs-ID und ein Geheimnis, dazu die
Anwendungsberechtigung für den Zugriff auf APIs und Webservices. In Business Central wird dieselbe
Anwendung über ihre Client-ID eingetragen, aktiviert und mit Objektberechtigungen versehen.
Microsoft hält dabei ausdrücklich fest, dass Anwendungen das Berechtigungsset SUPER nicht bekommen
können und nach dem Prinzip der geringsten Rechte einzurichten sind. Unser Server holt das Token
und erneuert es, bevor es abläuft — im Browser taucht davon nichts auf.
Dann kommt das Mapping. Ein Artikelstamm im ERP hat sehr viele Felder; eine
Website braucht davon einen bewussten Ausschnitt. Wir legen fest, welches ERP-Feld auf welches
Website-Feld geht, was Pflicht ist, was optional bleibt und was das Haus gar nicht erst verlässt —
Einkaufspreise, Deckungsbeiträge, Lieferantenkonditionen und interne Kennzeichen gehören nicht in
ein öffentliches JSON. Für den Abgleich ist ein Feld besonders wertvoll: das Änderungsdatum. Damit
holen wir beim zweiten Lauf nur noch, was sich seither bewegt hat.
Aktualisiert wird zweigleisig: ein geplanter Abgleich als Grundsicherung
plus Webhooks für den schnellen Weg. Business Central kennt Abonnements, bei denen es eine
hinterlegte Adresse aufruft, sobald sich ein Datensatz ändert. Beim Anlegen und beim Erneuern
verlangt es einen Prüfwert zurück; erst danach ist das Abonnement aktiv. Laut Dokumentation laufen
Abonnements nach drei Tagen ab, wenn sie nicht erneuert werden — die Erneuerung übernimmt bei uns
derselbe geplante Lauf, der auch den Abgleich fährt. Ein optionaler Wert im Abonnement dient als
gemeinsames Geheimnis; wir prüfen ihn, bevor irgendetwas verarbeitet wird.
Der Rückkanal ist die andere Richtung: Anfragen, Kunden und Aufträge, die
auf der Website entstehen, schreiben wir als Datensatz ins ERP zurück — serverseitig, mit denselben
Zugangsdaten, mit Prüfung der Antwort. Ein Formular erzeugt damit keinen Papierstapel, sondern
einen Vorgang, der im System sichtbar ist.
Und schließlich das, was in Angeboten gern fehlt: der Fehlerfall. Microsoft
begrenzt die Zahl der Anfragen und antwortet bei Überschreitung mit dem Statuscode 429; die
Dokumentation verlangt vom aufrufenden System eine Wiederholungslogik mit Abkühlphase. Genau so
bauen wir es: Filter auf das Änderungsdatum, seitenweiser Abruf, Sammelanfragen, Wiederholung mit
wachsendem Abstand. Antwortet das ERP nicht oder unvollständig, bleibt der letzte gute Stand
stehen und der Lauf wird protokolliert. Die buchbare Leistung dahinter beschreiben wir unter
Schnittstellenentwicklung.