Skip to main content
November 2026
HighlightsÖffentliche Bestellstatus-SeiteDeine Kund:innen verfolgen ihre Bestellung über einen persönlichen Link aus der Bestellmail. Die Seite zeigt den aktuellen Bearbeitungsschritt in einer Fortschrittsleiste mit vier Stufen, die Sendungsverfolgung aus den Business-Central-Belegen, alle Positionen mit Bild, die Beträge in der Bestellwährung und eine Karte der Lieferadresse. MwSt. und Optionsnamen hält dynamic commerce beim Bestellabschluss fest, damit die Seite immer den Stand der Bestellung zeigt.Den Link fügst du mit dem Platzhalter %order_status_url% in deine Bestellmails ein. Er ist 21 Tage gültig. Ohne Anmeldung zeigt die Seite personenbezogene Daten gekürzt an. In b2b-Shops mit Login-Pflicht müssen sich Kund:innen anmelden. Tracking- und Conversion-Skripte lädt die Seite nicht.
Öffentliche Bestellstatus-Seite mit Fortschrittsleiste, Karte der Lieferadresse und Positionen
Artikelliste ohne SeitenneuladenFilter, Sortierung, Paginierung und der Wechsel zwischen Kachel- und Listenansicht laden auf Kategorieseiten und in der Suche nur noch die Artikelliste nach. Das gilt für b2c-, b2b- und Katalog-Shops. Der Zurück-Button des Browsers funktioniert wie gewohnt, ein Ladezustand und eine Screenreader-Ansage sind eingebaut. Bei einem Fehler greift die normale Navigation.In den Standard-Themes ist die Funktion aktiv. Eigene Themes schaltest du mit layoutConfig.ajaxItemList: true in der Theme-YAML ein. Eigene Artikelbox-Skripte hängst du an das Event dc:itemlist:updated.Zoom in der Vollbild-GalerieArtikelbilder vergrößern deine Kund:innen in der Vollbild-Galerie in Stufen von 1× bis 3×: mit den Buttons + und −, per Doppelklick oder Doppeltipp, per Pinch-Geste oder mit den Tasten + und -. Den Ausschnitt verschieben sie durch Ziehen. Bei Video-, Embed- und 360°-Ansichten sind die Buttons ausgeblendet. Beim Bildwechsel setzt die Galerie den Zoom zurück. Das gilt für alle Themes mit Vollbild-Galerie.
Vergrößertes Artikelbild in der Vollbild-Galerie mit Zoom-Buttons
Algolia: Artikelattribute durchsuchbarDie Algolia-Freitextsuche berücksichtigt jetzt Artikelattribute. Die Feldnamen der Attribute erzeugt dynamic commerce dafür einheitlich.
  • Theme-Version 2.5.0 - Neues Export-Icon im Icon-Font. Medien-Bausteine richten Bilder über das picture-Element aus, und Galeriebilder füllen ihre Kachel auch in Containern voller Breite. Hinzu kommen Korrekturen an Fortschrittsleiste, Videobanner, Breadcrumb und Kontrasten
  • Scrollbar bei Modals - Das Layout verspringt beim Öffnen von Modals auf dem Desktop nicht mehr. Auf Tablet-Breiten bleibt der bisherige Ausgleich aktiv
  • Styleguide - Storybook ersetzt den KSS-Styleguide. Du findest dort Playgrounds für alle Komponenten, Design-Tokens, Breakpoint-Ansichten und themespezifische Komponentenlisten
  • Aufräumarbeiten - Warenkorb- und Außendienst-Logik liegen jetzt in Repositories, die Grundlage für mehrere Warenkörbe. Datenbankzugriffe in b2b-Bestellungen und Schnellbestellung nutzen gebundene Parameter. Ungenutzte Funktionen und PHP-Short-Open-Tags wurden entfernt
  • Testabdeckung - Neue Tests decken unter anderem Rahmenauftrags-Abrufe, die Bestellstatus-Seite, die Telefonnummern-Prüfung, die MwSt.-Berechnung und NavConnect ab
Artikel & Artikelkarte
  • Artikeldateien - Die Artikelkarte zeigt alle Dateien eines Artikels statt nur der ersten
  • Kategorien - Kurze Artikel-URLs funktionieren auch mit einer ungültigen Kategorie in der Sitzung. Fehlt beim Kategorietausch über NavConnect eine Kategorie, bricht der Tausch ab, statt Daten zu verändern
  • Merkzettel - Abfragen für Besucher ohne Besucher-ID liefern keine falschen Einträge mehr
Bestellung & Checkout
  • Rahmenaufträge: Abruf - Ein Abruf übernimmt Zeilenrabatt und Kundenbenutzer wie eine normale Bestellung, schließt über seine eigene Transaktions-ID ab und taucht nach dem Speichern nicht mehr in späteren Bestellungen auf
  • b2b-Warenkorb mit Individualisierung - Individualisierte Artikel ordnet der b2b-Warenkorb wieder richtig zu. Individualisierungsaufpreise speichert dynamic commerce als Dezimalwert
  • Schnellbestellung - Inaktive Artikel gelten als nicht gefunden. Querverweise löst die Schnellbestellung eindeutig auf und gibt die gefundene Artikelnummer zurück
  • Telefonnummer - Bei Registrierung und Bestellung prüft dynamic commerce das Format der Telefonnummer, damit die Übertragung nach Business Central nicht scheitert
Sicherheit
  • Außendienst - Außendienstmitarbeiter:innen sehen und wechseln nur noch zu eigenen Kund:innen der jeweiligen Firma
  • Rahmenaufträge - Abrufe sind auf eigene Rahmenaufträge und die offene Restmenge beschränkt
  • Downloads und Tickets - Downloads, Video-Streaming und das erneute Versenden von Tickets setzen eine bezahlte Bestellung der jeweiligen Kund:innen voraus
  • Bestellhistorie - Nachbestellen ist nur noch für die Person möglich, die bestellt hat
  • Login und Grußkarten - Weiterleitungen nach dem Login prüft dynamic commerce. Grußkartentexte gibt der Shop sicher aus
Betrieb
  • Webformulare - Hochgeladene Dokumente löscht dynamic commerce über den in der Datenbank gespeicherten Pfad
  • NavConnect - Das Ersetzen temporärer Kunden berücksichtigt die Firma
Oktober 2026
HighlightsCollana Pay: Kreditkarte vor Bestellabschluss und gespeicherte KartenDeine Kund:innen geben ihre Kreditkarte auf Wunsch schon bei der Auswahl der Zahlart ein. Belastet wird die Karte erst nach dem Klick auf Kaufen. Du aktivierst den Ablauf in Business Central mit Collana Pay Kreditkarte vor Bestellabschluss.Eingeloggte Kund:innen speichern ihre Karten und verwalten sie im Kundenkonto unter Zahlungsmittel. Dafür aktivierst du Collana Pay Kartenspeicherung erlauben. Mit Collana Pay max. gespeicherte Karten je Kunde begrenzt du die Anzahl. Bei der Auswahl der Zahlart erscheinen die drei neuesten Karten, weitere stehen hinter Mehr.
Kreditkarte bei der Auswahl der Zahlart eingeben und für künftige Bestellungen speichern
Gespeicherte Kreditkarte im Kundenkonto unter Zahlungsmittel
Collana Pay: Express-Checkout mit Apple Pay und Google PayIm Warenkorb bezahlen deine Kund:innen jetzt per Express-Button mit Apple Pay oder Google Pay. Auf Apple-Geräten erscheint Apple Pay, auf allen anderen Google Pay. Die Buttons stehen gemeinsam mit PayPal Express und Amazon Pay in einem einheitlichen Raster.Auf Wunsch zeigst du die Express-Buttons zusätzlich im ersten Bestellschritt über den Kontaktdaten an. Das aktivierst du für jeden Shop in Business Central. Auch Gutscheinbestellungen lassen sich per Express bezahlen.
Express-Buttons für Google Pay, PayPal Express und Amazon Pay im Warenkorb
Live-Suchvorschau im SuchfeldIn b2c-, b2b- und Katalog-Shops sehen deine Kund:innen ab drei Zeichen eine Vorschau mit Produkten, Kategorien und Suchbegriffen. Produkte erscheinen mit Bild, Name, Artikelnummer und Preis. Über Alle Ergebnisse anzeigen gelangen sie zur Ergebnisseite. Berechtigungen, Sortimentseinschränkungen und Preise entsprechen der Ergebnisseite.Die Vorschau lässt sich vollständig per Tastatur bedienen und öffnet sich auf mobilen Geräten unter dem Suchfeld. In den Standard-Themes ist sie aktiv. Mit shopConfig.searchSuggestions.enabled: false schaltest du sie ab. Nutzt dein Shop Algolia, bleibt die Vorschau automatisch aus.
Live-Suchvorschau mit Produkten, Kategorien und Suchbegriffen im Suchfeld

  • Wiederverfügbarkeitsbenachrichtigung überarbeitet - Erstellung und Versand der Benachrichtigungen wurden neu strukturiert. Das Frontend wurde angepasst, und End-to-End-Tests sichern den Ablauf ab
  • CleverReach-Vorlagen - Neue responsive Newsletter-Basisvorlagen für b2c und b2b
  • Zahlungsmittel im Kundenkonto - Gespeicherte Karten erscheinen als Kacheln mit Logo. Im Checkout erhält die ausgewählte Zahlart einen Akzentrahmen
  • Collana Pay: schnellerer Seitenaufbau - Kartenformular und Express-Buttons lädt dynamic commerce erst nach dem Seitenaufbau. Warenkorb und Checkout warten nicht mehr auf den Zahlungsdienstleister
  • Collana Pay: abgelaufene Karten - Ein nächtlicher Lauf widerruft abgelaufene Karten bei Collana
  • Apple-Pay-Domain-Verifizierung - Der Shop liefert die Verifizierungsdatei selbst aus, auch hinter Basic-Auth. Nutzt du einen anderen Zahlungsdienstleister, legst du dessen Datei unter userdata/applepay/ ab, optional für jede Domain
  • Collana Pay Client - Der Client nutzt jetzt die API v2. Aufrufe, die kein Geld bewegen, wiederholt er bei Fehlern automatisch
  • Artikel-Slider - Abstände steuerst du über eine CSS-Variable. Innerhalb eines Containers entsteht kein zusätzlicher Abstand mehr
  • Testabdeckung - Neue Codeception-Tests decken das b2c- und b2b-Kundenkonto mit Übersicht, Adressen, Bestellhistorie, Dokumentenarchiv und Benutzern sowie den Gutschein- und Express-Checkout ab. Hinzu kommen Characterization-Tests für Warenkorb-, MwSt.- und Preisfunktionen
Artikel & Artikelliste
  • Wiederverfügbarkeitsbenachrichtigung - Benachrichtigungsmails werden wieder zuverlässig versendet
  • Artikelliste: Variantenlinks - Nachgeladene Varianten verlinken auf die richtige Artikelkarte
  • Artikelliste: Tastaturbedienung - Die Tab-Reihenfolge folgt wieder dem Seitenaufbau. Das Mengenfeld durchbricht sie nicht mehr
Preise & Gutscheine
  • MwSt. bei gemischten Steuersätzen - Rabatte, Gutscheine und Aufschläge werden nach dem tatsächlichen Steuersatz verteilt. Bei Mengen über 1 stimmen MwSt. und Netto je Steuersatz, und im Warenkorb entsteht keine negative MwSt.-Zeile mehr. Die MwSt. auf den Versand bleibt auch bei vollständig rabattierter Ware erhalten
  • Gutscheinkauf - Gutscheinbestellungen tragen keine Versandart und keine Versandkosten des normalen Warenkorbs mehr. Der normale Warenkorb bleibt nach einem Gutscheinkauf erhalten
Bestellung & Checkout
  • Bestellabschluss: Lieferland USA - Bestellungen mit Lieferland USA brechen nach dem Speichern nicht mehr ab
  • Bestellabschluss ohne Transaktions-ID - Ein Abschluss ohne Transaktions-ID schließt keine fremden Aufträge mehr ab
  • Abo-Checkout - Ein abgebrochener Abo-Checkout macht die nächste normale Bestellung der Sitzung nicht mehr zur Abo-Bestellung. Der erste Schritt zeigt die Versandkosten wieder korrekt
  • Bestellmails - Gmail stellt die Farben korrekt dar. Der Logo-Pfad enthält den Domainnamen nicht mehr doppelt
  • Kundenstatistik - Kundennummer und Name stehen wieder nebeneinander
Zahlung
  • Collana Pay Express: Bestätigungsseite - Express-Bestellungen landen nach Kaufen auf der Bestätigungsseite statt mit der Meldung “Bestellung wurde bereits abgeschickt” auf der Startseite
  • Collana Pay Express: Adresse aus der Wallet - Passt die Lieferadresse aus Google Pay, PayPal oder Amazon Pay nicht zu den Versandkosten oder ist das Rechnungsland im Shop nicht zugelassen, wird nicht gebucht. Deine Kund:innen landen mit einem Hinweis im ersten Bestellschritt
  • Collana Pay Express: Abbruch - Ein abgebrochener Express-Checkout führt zurück auf die Ausgangsseite. Die Buttons werden danach neu aufgebaut
  • Collana Pay: bereits bezahlte Bestellung - Ein erneut abgeschickter, schon bezahlter Checkout zeigt eine Hinweisseite statt eines zweiten Bestellabschlusses. Asynchrone Zahlungs-Callbacks schließen die Bestellung zuverlässig ab
  • Collana Pay: Warenkorbpositionen - Zeilenbeträge mit Dezimalmengen stimmen. Die Gutscheinzeile trägt eine Artikelnummer, und eine Versandzeile über 0 € entfällt. Die MwSt. leitet dynamic commerce einheitlich aus dem Bruttobetrag ab
  • Computop-Rückrufe - Abgelehnte Kartenzahlungen landen nicht mehr auf einer leeren Fehlerseite. Die Session-ID liest dynamic commerce aus den Shopdaten
Sicherheit
  • Digitale Gutscheine - Digitale Gutscheine sind gegen SQL-Injection abgesichert und nur noch in der Sitzung abrufbar, die sie angelegt hat
  • Sensible Daten im Log - dynamic commerce maskiert API-Keys, HMAC-Schlüssel, Secrets und Tokens im NavConnect-Log. Der Collana-API-Key erscheint nicht mehr in Logs
  • Collana Pay: Doppelbelastung - Eine Sperre verhindert, dass ein erneutes Absenden die Karte doppelt belastet. Aufrufe, die Geld bewegen, wiederholt dynamic commerce nicht automatisch
September 2026
HighlightsKategoriespezifische TemplatesFür jede Wurzelkategorie kannst du eigene Templates für die Artikelliste, die Artikelkarte und die Shop-Navigation hinterlegen. Damit gestaltest du einzelne Sortimente unterschiedlich, ohne den Shop-Code zu ändern.
  • Sticky-Boxen ohne JavaScript - Sticky-Boxen wie die Bestellbox auf der Artikelkarte nutzen jetzt position: sticky. Das reduziert Skriptcode und verhindert Sprünge beim Scrollen
  • Telefonnummern-Bibliothek bedarfsgerecht laden - dynamic commerce lädt die Bibliothek nur bei Bedarf und über eine feste Cache-URL
  • Testabdeckung - Codeception-Tests nutzen eigene Testdaten statt der Demodaten. Neue End-to-End-Tests decken das b2b-Benutzerkonto, den Außendienst-Login und Kategorieberechtigungen ab. Hinzu kommen Unit-Tests für Repository-, Cache- und Attributlogik
  • Aufräumarbeiten - Ungenutzte AJAX-Endpunkte wurden entfernt. Repository- und Collection-Klassen haben eindeutige Typen. Die Kampagnen-Factory erhält ihren Logger per Dependency Injection, und der Passwort-Parameter des Datenbank-Wrappers ist als sensibel markiert
Artikel & Artikelkarte
  • Direktbestellung: Preisspalte - Zeigt jetzt den Einzelpreis statt des Zeilenbetrags und stimmt damit mit Artikelliste und Warenkorb überein
  • Artikelattribute doppelt - Gleiche Attribute an Variante und Stammartikel erscheinen auf der Artikelkarte nur noch einmal
  • Artikelsortierung - Die Artikelnummer dient als zweites Sortierkriterium, damit die Reihenfolge bei gleichen Werten stabil bleibt
  • Katalog-Artikelkarte - Die Sticky-Bestellleiste wurde im Katalog-Shop entfernt
Bestellung & Zahlung
  • Warenkorb nach Session-Wechsel - dynamic commerce übernimmt eine neue Session-ID zuverlässig in den Besucher-Datensatz. Warenkörbe und andere sitzungsgebundene Daten bleiben erhalten
  • Kampagnen mit ungültigem Gratisartikel - Fehlerhafte Kampagnen werden protokolliert und übersprungen. Der Seitenaufbau und nachfolgende Kampagnen laufen weiter
  • Rabatte aus Business Central - In Business Central zulässige Rabatte führen im Shop nicht mehr zu einer leeren Seite
  • Dokumentenarchiv - Rechnungen werden nicht mehr fälschlich auf den Status “abgeschlossen” gesetzt
  • CollanaPay-Callback - Eine fehlende Datenbankverbindung bricht den Mailversand im Callback nicht mehr ab. Das Logging liefert mehr Details
Berechtigungen & Sicherheit
  • Kundenberechtigungen - Ausschlussregeln gelten nur noch für den vorgesehenen Mandanten, Shop und die jeweilige Sprache
  • Sensible Daten im Log - dynamic commerce schreibt Zugangsdaten aus Webformularen und Feed-Generierungen nicht mehr ins Log
  • Shop-Code - Der Parameter shop_code ist gegen SQL-Injection abgesichert
Feeds & Tracking
  • Google-Merchant-Feed - Fehlen Zugangsdaten, erzeugt der Feed keinen Fehler mehr. Google kann ihn weiterhin direkt abrufen
  • Tag Manager: Bestellabschluss - Möglicher Typfehler beim Auslesen der Telefonnummer im Purchase-Event behoben
Betrieb
  • Channable-Sperrdatei - Eine verwaiste Sperrdatei stoppt nicht mehr den vollständigen Cron-Lauf
  • Cronjobs - Die Meldung “Cronjob already running” wird als Warnung statt als Fehler protokolliert
August 2026
HighlightsHändlersuche flexibel konfigurierbarDie Händlersuche passt du jetzt an deinen Markt an: Der Startort der Suche ist pflegbar, die Anzahl der angezeigten Händler:innen steuerst du über den Baustein oder die Shop-Konfiguration. Wählen Kund:innen einen Händler aus, landen zusätzliche Händlerdaten direkt am Kundendatensatz.
Konfiguration der Händlersuche mit Startort und Anzahl der Händler
b2b: MwSt. nach USt-Buchungsgruppe des KundenIm b2b-Checkout richtet sich die Umsatzsteuer jetzt nach der USt-Geschäftsbuchungsgruppe, die am Kunden hinterlegt ist. Damit stimmen Web-Beleg und BC-Beleg auch bei abweichenden Steuerkonstellationen überein, etwa bei EU-Ausland oder Reverse Charge.b2c-Kundenkonto: Bestellhistorie & DokumentenarchivDie Bestellhistorie lädt jetzt seitenweise vom Server - auch Konten mit vielen Bestellungen öffnen sich damit deutlich schneller. Zusätzlich suchen deine Kund:innen direkt nach einer Belegnummer und finden im Dokumentenarchiv auch ihre Lieferungen. Bestelldetails von Gutschein-Bestellungen bleiben nicht mehr leer, und die Telefonnummer pflegen sie selbst im Konto.Feldlängen zwischen BC und Web angeglichenDie Datenbankspalten im Shop entsprechen jetzt den Definitionen aus Business Central: Artikelbeschreibungen fassen 200 Zeichen, Betragsspalten in Warenkorb und Beleg rechnen mit vier Dezimalstellen. Abgeschnittene Texte und Rundungsabweichungen bei der Übernahme aus BC treten damit nicht mehr auf.Sicherheits-Härtung im ShopSeiten-Parameter liest der Shop jetzt zentral und typsicher aus - das riegelt XSS und SQL-Injection zusätzlich ab. Dateinamen aus Uploads werden saniert, und die Passwortkriterien bei der Registrierung erzwingt der Server zusätzlich zur Prüfung im Browser.
  • Cross-Selling konfigurierbar - Anzahl der angezeigten Cross-Seller pro Theme einstellbar
  • MwSt.-Abfragen gecacht - Die Steuersatz-Ermittlung je Produktbuchungsgruppe wurde extrahiert und zwischengespeichert
  • NAV-Logging drosselbar - Maximale Zeilenlänge für das JSON-Request-Logging der NAV-Schnittstelle konfigurierbar
  • Solr-Integration entfernt - Die abgekündigte Solr-Suche samt Konfiguration und Pipeline-Resten wurde ausgebaut
  • Testabdeckung - Neue End-to-End-Tests für b2c-Registrierung, Kampagnen, b2b-Bestellprozess und Artikelkarte, neue Unit-Tests für AdvancedPriceProvider und Artikel-Verfügbarkeit; instabile Tests stabilisiert
Artikel & Artikelkarte
  • Artikelliste mit Varianten - „Alle in den Warenkorb” legte nur den ersten Artikel der Liste ein
  • Artikeldetail: Variante vs. Stammartikel - Über die Shop-Konfiguration steuerbar, ob erste Variante oder Stammartikel angezeigt wird; Titel zeigt nur noch den Namen des Stammartikels
  • Bestellbutton (Buybox) - Wird ohne Bestellrecht bzw. ohne aktiven Kunden korrekt gesperrt
  • Artikelbewertungen - Leerzustand-Box, wenn zu einem Artikel noch keine Bewertung vorliegt
  • Artikelbeschreibungen aus Textbausteinen - Wurden nicht mehr angezeigt; Titel wird lokal-first aufgelöst
  • Beschreibungen untergeordneter Artikel - Werden jetzt ausgegeben
  • Individualisierte Artikel - Eindeutigerer Customization-Hash, saubere Fehlerbehandlung beim Upload, skalarer Hash für die Warenkorbzeile
  • Artikelkarte: Warenkorb-Fallback (b2c) - Fallback-Pfad repariert
  • Artikelkarte: Thumbnails - Reagieren wieder auf Klick
  • Markenmerkmal als Namenspräfix - Wird auch ohne Marken-Icon vorangestellt
  • Rich Snippets - Artikelkarten-Auszeichnung aktualisiert
Suche & Filter
  • Artikelsuche: Umlaute - HTML-kodierte Umlaute und ß werden gefunden
  • Merkmalfilter - Falscher Spaltenname (lenght) korrigiert; Filter-Reihenfolge deterministisch, globale Filter zuerst
  • Topseller-Baustein - Sortiert nach Verkaufsrang statt nach Artikel-ID
  • Algolia-Suchergebnisse - Preistext korrigiert
Preise & Gutscheine
  • Gutscheine setzten MwSt. auf Null - Wertgutscheine nullten den Steuerbetrag der Belegzeile aus
  • Rechnungsrabatt: MwSt.-Korrektur - Die Steuerkorrektur skaliert nach steuerpflichtigem Rabattanteil statt nach Gruppensumme
  • Versandgutschein - Wurde nicht mehr durch prozentuale Versandkosten überschrieben
  • Preis: negatives Ergebnis - Sehr hohe Rabatte führten zu negativen Preisen
Warenkorb & Bestellung
  • Gratisartikel im Warenkorb - Werden in Warenkorb und Mini-Basket ohne Preisausgabe dargestellt
  • Warenkorb-Button - Nutzt den konfigurierten TextProvider (korrekte Übersetzungen)
  • Checkout-Checkbox - Markup des Textmoduls korrigiert
  • Bestellhistorie: Variantenbilder - Varianten ohne eigenes Bild zeigen das Bild des Stammartikels
  • Abo-Übersicht - Auf aktuellen Shop und aktuelle Sprache eingegrenzt
b2b
  • b2b-Checkout: Adressen - Standard-Lieferadresse ist wieder wählbar, das Anlegen einer Adresse überschreibt den Ansprechpartner nicht mehr
  • b2b: Angebotsanfrage - NULL-Guard für leeres Lieferdatum beim Insert
  • b2b: Benutzerverwaltung - Modal für neue Benutzer:innen wird bei Bedarf gerendert, Berechtigungen bleiben editierbar
  • Hauptbenutzer-Rechte - Rahmenbestellungs-Berechtigung des Hauptbenutzers korrigiert
  • Begrüßungstexte - Hauptbenutzer-Platzhalter wird nicht mehr im Text angezeigt
Konto & E-Mail
  • Passwort-vergessen ohne Mail (Katalog-Shop) - Benutzer-Mailtexte werden vom Shop des Kundenstamms geerbt; Shops ohne eigene Texte verschicken die Mail wieder
  • Passwort-Reset - Nach dem Zurücksetzen Weiterleitung zum Login
  • Telefonnummer-Eingabe - Ländervorwahl entfernt die führende 0, Formatierung angepasst
  • E-Mail-Footer - %linkToShop%-Platzhalter wird ersetzt; /userdata/-Pfade nur bei relativen URLs absolut gemacht
  • Bestellmail: Bildgrößen - Bildmaße werden für das Template berechnet, mit Fehlerbehandlung bei unlesbaren Dateien
Schnittstellen & Sonstiges
  • NAV: Artikelumbenennung - rename_item wird nach Mandant (company) gefiltert
  • NAV: Kunden-Login - send_customer_login prüft die Company mit
  • Login-E-Mail-Änderung - Wird für die Abholung durch BC markiert
  • Shop-Company-Cleaner - Fehlerhafte Tabellen-Abfrage im UnlinkedShopCompanyCleaner korrigiert
  • Header-Overflow - Kein Überlaufen mehr durch den KI-Button; Flashmessage-Position oben
Juli 2026
HighlightsPasswortloser Login (OTP)b2c-Kund:innen melden sich jetzt ganz ohne Passwort an - einfach per Code aus der E-Mail - und können sich so auch direkt registrieren. Die Login-Maske bietet wahlweise Passwort oder E-Mail-Code (als Theme-Einstellung). Frühere Gast-Bestellungen erscheinen nach dem Login automatisch im Kundenkonto.
Passwortloser Login für b2c-Kunden per E-Mail-Code
E-Rechnung (E-Invoice)Kund:innen fordern ihre Rechnung jetzt als E-Rechnung an - über einen neuen Baustein im Shop. Die Zustellung erfolgt an den angemeldeten Benutzer, genau wie bei der gewohnten Rechnungskopie.
E-Rechnung im Belegarchiv anfordern
Neue Preis-Engine (KUMAVISION-Unterstützung)Neben unserer bewährten Standardpreisfindung unterstützt dynamic commerce jetzt auch die Preisfindung unseres Partners KUMAVISION. So wählst du das passende Preismodell - inklusive eigener Rabattklassen, Rabatten auf Artikelgruppen und Fallback-Regeln auf Zeilenebene. Umfangreiche neue Tests sorgen dafür, dass jeder Preis verlässlich stimmt.Zahlungsoptionen nach BestellbetragZahlungsarten lassen sich jetzt an die Bestellsumme koppeln: Über einen Mindest- und Höchstbetrag legst du fest, ab wann eine Zahlungsart verfügbar ist - ideal, um etwa Kauf auf Rechnung erst ab einem bestimmten Warenkorbwert anzubieten.Gewichtete SucheDie Shop-Suche liefert jetzt relevantere Ergebnisse: Treffer werden nach gewichteter Relevanz sortiert statt rein nach Übereinstimmung - Kund:innen finden die passenden Artikel schneller.
  • CurrencyManager durchgängig - Einheitliche Preisformatierung mit Rundungsmethoden, Symbol-Auflösung und Locale-Unterstützung; in format_amount und KumaPriceProvider integriert, breite Testabdeckung
  • Favoriten: Shop-Code - Favoriten werden pro Shop (shop_code) geführt
  • Rabatt-Formatierung vereinheitlicht - Regel-Rabatte nutzen eine gemeinsame Wert-Formatierung
  • Registrierung: Textverwaltung - Texte über RegionalizedTextProvider statt GLOBALS
  • Aufräumarbeiten - ESAG-Spezialcode entfernt, ungenutzte Queries/Spalten und Discount-Type-Feld aus Kuma-Migrationen entfernt, Namespace-Fixes
Warenkorb & Bestellung
  • Warenkorb: MwSt.-Berechnung - Falsche VAT-Berechnung im GenericUserBasket korrigiert
  • Kampagnen: Gratisartikel stapelten sich - Free Items wurden beim Neuladen des Warenkorbs mehrfach hinzugefügt
  • Bestellbestätigung: Versandkosten-Zeile (b2c) - Versandkosten fehlten in der Bestätigungsmail
  • Bestellbestätigung: individualisierte Artikel - Kennzeichnung in Bestätigung und Kundenkonto
  • Direktbestellung: Sticky-Bar - Artikelzähler wurde nach Entfernen einer Zeile nicht aktualisiert
  • Angebote: Warenkorb-Tabs - Tabs erscheinen nur noch, wenn Quotation erlaubt ist
Preise & Zahlung
  • Kuma-Rabatte doppelt angewendet - Rabatte aus dem PriceProvider wurden nicht mehr zusätzlich appliziert
  • CollanaPay: Ausfallsicherheit - Checkout übersteht Ausfälle des Zahlungsdienstleisters; keine externen Calls mehr aus Tests
  • Artikelliste: Streichpreis - Streichpreise werden auch in der eingeloggten Artikelliste angezeigt
Konto & Adresse
  • b2c-Registrierung - Formular-Routing zum Registration-Handler und Fehler-Feedback repariert; Bestätigungsmail mit „hier”-Platzhalter
  • Lieferadresse: Telefonnummer - Feld phone_no statt telephone; Telefonnummer wird beim Adresswechsel korrekt geleert
  • Kundenattribute - PrimaryContactNo und weitere Attribute korrekt übernommen
  • Login: Session nur in DB - open_customer_login funktionierte nicht, wenn die Session-ID nur in der DB existierte
Tracking
  • Tag Manager: Consent-States - Consent-Ausgabe jetzt unabhängig von der GTM-Container-ID
  • Tracking: Jentis auf Shop-losen Websites - Script wurde auf Websites ohne Shop nicht ausgegeben
Sicherheit & Sonstiges
  • Sicherheit: SQL-Injection-Härtung - Variablen konsequent als Parameter in Prepared Statements gebunden
  • Artikelkommentare: Spam-Fehlmeldung - Manuelles Neuladen nach Kommentar-Absenden erzeugte fälschlich Spam-Verdacht
  • b2b: Versandoptionen - Definierter $shopConfig wird an getShippingOptions übergeben
  • Google Merchant: Feld-Name - sales_price zu sale_price korrigiert
  • Layout: Bestellbutton in Itembox - Ausrichtung korrigiert
Juni 2026
Bug Fixes
  • Bestellprozess: Apostroph in Kundennamen - Backslash-Escaping wurde literal in die DB geschrieben
  • Bestellprozess: Telefonnummer nicht editierbar - Eingeloggte b2c-Kund:innen konnten im Checkout die Telefonnummer nicht ändern
  • Bestellprozess: Harter Fehler bei unerwarteten Daten - Fehlerhafte Address-Expectations crashten den Checkout statt graceful zu reagieren
  • Collana Pay: Crash ohne Versandoptionen - Shops ohne konfigurierte Versandart stürzten bei Collana-Zahlung ab
  • Bestellhistorie: MwSt. und Sortierung - Falsche Steuerberechnung und fehlerhafte Sortierung in der Bestellübersicht
  • Gutschein: Schlüsselgenerierung + Prozent/Betrag-Logik - Coupon-Key-Kollisionen und gleichzeitiges Setzen von Betrag+Prozent behoben
  • Katalog-Layout: Darstellungsfehler - Fehlerhafte CSS-Ausgabe im Catalog-Frontend
  • Währung: Formatierung von float(-0) - Negativvorzeichen bei Null-Beträgen entfernt
  • Preis: Mengenänderung ohne gesetzte Preisdaten - Preis wurde bei Qty-Update nicht korrekt initialisiert
  • Artikelvarianten: Berechtigungsprüfung - Navigation-Varianten prüften die falsche Klasse
  • Firefox: Fälschliche Mobile-Erkennung - Touch-Device-Detection erkannte Firefox Desktop als Mobilgerät
  • Adresse: Anrede als Integer casten - Falscher Datentyp bei Salutation führte zu Fehlern
  • Benutzeranlage: Duplikat-E-Mail ablehnen - Neue Shop-User konnten mit bereits existierender Mail angelegt werden
  • Operator-Priorität: Fehlende Klammern - Bedingungs-Auswertung lieferte falsches Ergebnis
  • Footer: Breite und Widerrufsinformation - b2c-Footer-Layout und Cancellation-Info korrigiert
  • Modal: Titel und Footer zentriert - Info-/Error-/Success-Modals einheitlich ausgerichtet
  • Kommentar: Max-Length - Namensfeld in Artikelkommentaren ohne Längenbegrenzung
  • Versandgewicht: Verpackungseinheit ignoriert - Packing-Unit-Multiplikator wurde bei Gewichtsberechnung nicht berücksichtigt
  • Kategorie: Initialisierung - Category-Global korrekt über CategoryService und request_uri initialisiert
Features & Improvements
  • Abonnement-Management - Abo-Bestellungen in Warenkorb, Zahlung, Preis-/Versand-/Gutschein-Zusammenführung, Promotion-Felder
  • Filteroptionen: Leere/nicht qualifizierte ausblenden - Nicht verfügbare Filterwerte werden automatisch versteckt
  • Markensuche - Volltextsuche findet Artikel über Markennamen
  • Top-Seller-Anzeige - Sitepart zur automatischen Anzeige von Bestsellern
  • RMA: Barrierefreiheit + Bild-Upload - Retouren-Formular zugänglicher gestaltet, Bilder können hochgeladen werden
  • Scrollbar: Lineare Steuerung mit Loop - Horizontale Scrollbar mit optionalem linearen Verhalten und Endlos-Schleife
  • Icons für Angebote und Rahmenaufträge - Neue Icons im Kundenbereich für Quotes/Blanket Orders
  • Nicht erlaubte Länder im Adressmodal - Liste gesperrter Lieferländer wird direkt im Bestell-Dialog angezeigt
  • Vertreter-Breadcrumb - Link zurück ins Vertreter-Konto im Breadcrumb sichtbar
  • Blanket Orders: Mengen-Darstellung - Abstandshalter zwischen Mengenfeldern für bessere Lesbarkeit
  • Refactoring: ItemFiles → Repository - Bild-Queries aus dem Decorator ins WebshopItemFileRepository verschoben
  • Refactoring: User-Factory - Entscheidung welches Repository genutzt wird in separate Factory ausgelagert
  • Refactoring: Permissions - Berechtigungs-Merging in eigene Funktion extrahiert
  • Refactoring: Campaign Interface - CampaignRuleHelper nutzt jetzt das Interface statt konkrete Klassen
  • Aufräumarbeiten - mcrypt-Dependency entfernt, CustomerPermissionGroupDecorator entfernt, show_random_items entfernt
Mai 2026
Features
  • Add unit tests for GenericUserItemPermissionProvider.
  • Add tests for isWebshopItemOrderable to cover various scenarios.
  • First unit test for GenericWebshopItemOrderabilityService.
Improvements
  • Use getCustomerNo instead of accessing customer_no directly in isShopSalespersonShop check.
  • Remove getShowRandomItems and getNoOfRandomItems methods from the CategoryInterface.
Bug Fixes
  • Fix PHPStan errors and Codeception errors.
  • Fix too many PDO parameters in check_duplicate_user function.
  • Fix mails for Outlook.
  • Fix return value in documentation of setCustomerNo method in Salesperson.php.
April 2026
Features
  • add custom success message, add placeholder to confirmation email, success messages and subjects
  • add confirmation email in contactform. change checkbox infield from lines to header
  • add centralAuthV2 (security improvements)
  • add env var to directly redirect to auth0 for login
Improvements
  • Use prep stmt with correct params
  • refactor migration handling to improve transaction management
  • refactor mysqli_query calls to prepared statements
  • Refactor shop_payment_option query to use prepared statements
  • refactor basket profile to basket type
  • Paypal: use the calculate_totals to determine the amount
  • CustomerAddress: initialize the CustomerAddress prior to session_save_data_b2c()
  • Payment: remove useless count on the not defined variable $resultArray for paypal express
  • Availability: change literals in getItemAvailability to constants
  • AttributeFilter: change the querys HAVING COUNT from item_no to the attribute_code
Bug Fixes
  • fix codeception migrations - fix basket quantity change
  • fix sql params in register_new_customer
  • fix sql injection in user_order_payment.inc.php refactors mysqli_query calls to PDOQueryWrapper
UI/UX Adjustments
  • styling inquiry basket
  • changed localized strings for quotes
Other
  • merge from lulatour
  • cleanup db dump
  • Deleted unlink.svg:Zone.Identifier
  • set collana pay paid order to successfully on callback
März 2026
Features
  • Add navconnect functions for NextGen Migration
  • Add option to load custom favicon from userdata
  • Add script for exporting database from remote to local and config variable for remote branch
Improvements
  • Cast right_blanket_order to boolean in getter/setter functions
  • Extend shop user SQL data for new schema
Bug Fixes
  • Fix migration tool
  • Fix missing colon on PDO parameters
  • Fix shop user modals
Other
  • Update KSS documentation
Februar 2026
Features
  • Add CRSF token class and use for payment page to prevent multiple post attempts
  • Add new Amazon Pay URLs
  • Add GitHub coding agent for legacy
  • Add Junie guidelines
  • Add original viewmodel context into AdditionalData renderRows
  • Add table indexes
  • Add role for accessibility in lists
  • Add logs to pipeline output
  • Add min, max, and step for search list
  • Add default values for new ShopSetup fields
Improvements
  • Update SQL migrations in demo
  • Improve test execution via composer
  • Optimize scripts for tests
  • Optimize performance of tests
  • Optimize performance of ItemCardTests
  • Optimize test b2b
  • Optimize test execution via composer
  • Refactor and fix open_salesperson_login to create a new session for the given salesperson
  • Refactor getUpdateInsertQueryFromArray to improve safety and stability
  • Simplify price queries, add caches, and remove unused parameters
  • Change the default sorting from customer_no to name for salesperson
  • Change caching keys from arrays to string for price
  • Change default DE country code getting pulled instead of customer country code
  • Change the used parameters in getWebshopItemByItemNo to the correct ones
  • Change the default sorting from customer_no to name for salesperson
  • Fixed env for additional env variables
Bug Fixes
  • Fixed wrong YAML entries for color in mailConfig
Dezember 2025
Improvements
  • DataCleaning: Change the data cleaning to remove only unlinked/unreferenced data.
  • Salesperson: Move customer fetching to repository to have only one logic.
  • Payment: Refactor the payment response files order_error, order_notify, and others.
  • Feeds: Use the permission provider to export only the permitted items.
  • Top Items: Intersect the top items with the allowed item prior to the query.
  • Permissions: Add annotations from the code review.
Bug Fixes
  • Fix quick order get item number from cross-reference.
  • SQL injection fix in item card.
  • Fix navconnect function -> get_field_content.
  • Heisenbug when initializing the MustacheRenderer in Docker with XDEBUG_MODE.
  • Top Items: Make sure that topItemsArray is an array to work with.
  • Fix empty customer class after login.
  • Fixed move up and down in page list view.
UI/UX Adjustments
  • Add item card flag in item list.
  • Fixed icons markup for KSS.
  • Change password link placeholder in BC Webform from %password_link% to %link%.
Other
  • Remove b2c/ajax.php and references of it in dc/common/common.js.
  • Tests: Add test for delete() in navconnect.
November 2025
Features
  • Add legacy tarball creation for new deployment pipeline method and update build exclusions in Makefile
  • Add pipelines for demo
Improvements
  • Change category structure to mustache template
Bug Fixes
  • Fix infieldInputs: also handle blur for not flickering labels, refactoring
  • Fix infieldInputs: special inputs like tel, date, masketDate that these fields are always focused prevent overlapping label with placeholder
  • Fixed missing index and set default sorting when items have the same ranking
  • Fix rename_item: mysqli 3rd param causes error, field ‘type’ not in shop_user_basket_line_new anymore
  • Fix type error when no items are present in query
  • Fixed sm cell in linklist if is a boolean format
  • Fix BC item preview
  • Fix demo pipeline triggers
  • Fix round values for collanaPay
  • Hotfix: prevent failed order emails due to empty recipient
  • Fixed share URL in item card
UI/UX Adjustments
  • Quantity spinner: prevent add to favorites when quantity input is changed and hitting enter
  • Mobile menu set top 0 of mobile menu when sub-entry is opened - prevent submenu not accessible
  • Tag manager remove noscript-tag
Other
  • Adding files for deployment hooks
  • Prices: add discount_group to unique nav_primary index for the nav sync
  • HighlightEditor: remove line feeds from the description
  • Cache DB connection (PDO and mysqli) to force using only one open connection
Oktober 2025
Features
  • Add custom value for field ‘your_reference’ for ordering blanket order.
Improvements
  • Improve healthcheck.
  • Replace sleep with proper wait conditions.
  • Make sure currShopConfig is filled in MustacheRenderer.
Bug Fixes
  • Fix tests.
  • Fix demo DB data encoding problem for tests.
  • Fix DB dump issues.
  • Fix migrations.
  • Fix webshop login site part.
  • Fix correct the doc-block to string.
  • Fix currency format on b2c item card.
  • Fix GetOrders, check for SubArray.
  • Fix bug that no item_list is shown if no filter is set in the main_shop_item_preview table.
  • Fix bug that wrong salesperson text constant shown if only one salesperson is available.
  • Fix add default value and type casting for salesperson code in customer.
Other
  • Restore git user after release.
  • Remove debug code.
  • Update DB dump.
  • Various fixes from the current shop update.
September 2025
Features
  • Webforms: add theme creation to download_file_new.php
  • Hide orders on other reasons
Improvements
  • DB: Don’t echo database credentials
  • ShowAddress: True on default in b2b
  • Composer: Update composer.lock to match composer.json state
Bug Fixes
  • Fix item obj parameter for function get_itemcard_descriptions
  • Fixed: Save sales_line_customize in b2b how it’s done in b2c
  • Fixed: Set customization_hash or it will not be displayed in step 1 in b2b
  • Fix product search cron
  • Fixed: Order subscription header by payment type or it is sorted by ID (inconsistent view)
  • Fixed order button icon color
  • Fix checkPasswordStrength
  • Fix UnitPrice Tax
August 2025
Improvements
  • Change all htdocs path to /app
  • Change docker path everywhere to /usr/local/apache2/htdocs
  • Load themes always from disk
  • Add Algolia styling
Bug Fixes
  • Call login listener before setting salesperson data to prevent silent errors
  • Fix layout class migration
  • Fix order bar
  • Fix Algolia variants
  • Fix Algolia attributes
  • Fix blanked orders
  • Fix false function calls in GeneralAjaxData
  • Fix load variants in b2b item list
  • Fixed SQL error after set page link insert
  • Fix multiple script load error
UI/UX Adjustments
  • Removed headline in topsellerPreview
Other
  • Update releaseTools
  • Add text constant
  • Changed TCS group classes
  • Get Webshop Order Line Additional Data
  • Add blanketorderhelper to basket button class in GeneralAjaxData
  • Prevent usage of dummy items in getAlgoliaItemListRender
  • Algolia add variant description
  • Algolia add prices
  • Algolia add is b2b in renderInstantSearch, adapt sorting
Juli 2025
Features
  • Add possibility to get more information from shop
  • Add GTIN to shop_item and search and quick_order
Improvements
  • Cleanup docker-compose.yml files and add support for profiling for PHP8.1 and PHP8.3
  • Refactor: use container images from dynamiccommerce instead of building them again for every automated tests execution
  • Optimize performance and disk space usage of PHP8.3 Docker image build
  • Refactor run-codeception.yml to use dynamic Docker prefix for container management
  • Refactor pipeline for running Codeception
  • Config vendor filter in item statistics
  • Make Dice error more verbose to find the initial error faster
Bug Fixes
  • Fix redirect to search after login
  • Fix correct graduate price cache key
  • Fix false array structure for order tables on older MariaDB versions
  • Fix update of text constants from file to prevent overwriting of changed entries
  • Fix selector to pass BasketCest.testRemoveItemBasket successfully
  • Fixed backslash in mail color
  • Fix problem that Docker volumes are always named lowercase
  • Fix permissions in pipeline
  • Fix permission error at the end of pipeline execution
  • Fix error when trying to run Codeception pipeline
  • Fix shipping options & payment options permission queries
UI/UX Adjustments
  • Add styling for itemlist in order
  • Add itemlist slider to order
  • Add accessibility in b2b, catalog, website, login
Other
  • DB: Change length of shop_nav_sales_header.shipment_method from 80 to 100
  • DB: Change length of shop_nav_sales_header.payment_terms from 80 to 100
  • Add cleanup step to adjust ownership after test execution in run-codeception.yml
  • Add PHP script to rewrite the docker-compose.yaml file for the use in the pipeline
  • Remove unnecessary environment variables
Juni 2025
Features
  • Implemented group by functionality.
  • Added NOT LIKE comparator for SQL find by criteria from repository.
  • First implementation of additional_data table.
  • Added script for automatic MySQL migration.
Improvements
  • Updated database dump.
  • Added sorting column and order filter by sorting column in collection filter group.
Bug Fixes
  • Fixed division by zero by type casting qty as float in item price data.
  • Fixed link for Excel XLS.
  • Fixed Channable mark as shipped.
UI/UX Adjustments
  • Dealer search removed radius.
Mai 2025
April 2025
März 2025
Februar 2025
Januar 2025
Dezember 2024
November 2024
Oktober 2024
September 2024
August 2024
Juni 2024
Mai 2024
April 2024
März 2024
Februar 2024
Dezember 2023
November 2023
Oktober 2023
September 2023
August 2023
Juli 2023
Juli 2023
Juni 2023
April 2023
Oktober 2022
September 2022
August 2022
Juli 2022
Juni 2022
Mai 2022
April 2022
März 2022
Februar 2022
Dezember 2021
November 2021
Oktober 2021
September 2021
August 2021
Juli 2021
Juni 2021
Mai 2021
April 2021
März 2021