Skip to main content
November 2026
HighlightsPublic order status pageYour customers track their order via a personal link in the order email. The page shows the current processing step in a four-stage progress bar, shipment tracking from the Business Central documents, all lines with images, the amounts in the order currency, and a map of the delivery address. dynamic commerce records VAT and option names at order completion so that the page always reflects the state of the order.You insert the link into your order emails with the placeholder %order_status_url%. It is valid for 21 days. Without signing in, the page shows personal data in abbreviated form. In b2b shops that require login, customers must sign in. The page does not load tracking or conversion scripts.
Public order status page with progress bar, delivery address map, and order lines
Item list without page reloadOn category pages and in search, filters, sorting, pagination, and switching between tile and list view now reload only the item list. This applies to b2c, b2b, and catalog shops. The browser’s back button works as usual, and a loading state and a screen reader announcement are built in. If an error occurs, normal navigation takes over.The feature is active in the standard themes. You enable it for custom themes with layoutConfig.ajaxItemList: true in the theme YAML. You attach custom item box scripts to the dc:itemlist:updated event.Zoom in the full-screen galleryYour customers can enlarge item images in the full-screen gallery in steps from 1× to 3×: using the + and − buttons, by double-clicking or double-tapping, with a pinch gesture, or with the + and - keys. They move the visible section by dragging. The buttons are hidden for video, embed, and 360° views. The gallery resets the zoom when the image changes. This applies to all themes with a full-screen gallery.
Enlarged item image in the full-screen gallery with zoom buttons
Algolia: item attributes searchableThe Algolia full-text search now takes item attributes into account. For this purpose, dynamic commerce generates the attribute field names uniformly.
  • Theme version 2.5.0 - New export icon in the icon font. Media blocks align images via the picture element, and gallery images fill their tile even in full-width containers. In addition, there are fixes to the progress bar, video banner, breadcrumb, and contrasts
  • Scrollbar with modals - The layout no longer shifts when opening modals on desktop. On tablet widths, the previous compensation remains active
  • Style guide - Storybook replaces the KSS style guide. There you will find playgrounds for all components, design tokens, breakpoint views, and theme-specific component lists
  • Cleanup - Basket and sales representative logic now reside in repositories, the foundation for multiple baskets. Database access in b2b orders and quick order uses bound parameters. Unused functions and PHP short open tags have been removed
  • Test coverage - New tests cover, among other things, blanket order releases, the order status page, phone number validation, VAT calculation, and NavConnect
Items & item card
  • Item files - The item card shows all files of an item instead of only the first
  • Categories - Short item URLs also work with an invalid category in the session. If a category is missing during a category swap via NavConnect, the swap is aborted instead of modifying data
  • Wish list - Queries for visitors without a visitor ID no longer return incorrect entries
Order & checkout
  • Blanket orders: release - A release applies line discount and customer user like a normal order, completes via its own transaction ID, and no longer appears in later orders after saving
  • b2b basket with customization - The b2b basket correctly assigns customized items again. dynamic commerce stores customization surcharges as decimal values
  • Quick order - Inactive items are treated as not found. Quick order resolves cross-references unambiguously and returns the item number found
  • Phone number - During registration and ordering, dynamic commerce validates the phone number format so that the transfer to Business Central does not fail
Security
  • Sales representatives - Sales representatives can now only see and switch to their own customers of the respective company
  • Blanket orders - Releases are restricted to the customer’s own blanket orders and the open remaining quantity
  • Downloads and tickets - Downloads, video streaming, and resending tickets require a paid order of the respective customer
  • Order history - Reordering is now only possible for the person who placed the order
  • Login and greeting cards - dynamic commerce validates redirects after login. The shop outputs greeting card texts securely
Operations
  • Web forms - dynamic commerce deletes uploaded documents via the path stored in the database
  • NavConnect - Replacing temporary customers takes the company into account
October 2026
HighlightsCollana Pay: credit card before order completion and saved cardsIf desired, your customers can enter their credit card when selecting the payment method. The card is charged only after clicking Buy. You enable this flow in Business Central with Collana Pay Credit Card Before Order Completion.Signed-in customers can save their cards and manage them in the customer account under Payment methods. To do so, you enable Collana Pay Allow Card Storage. With Collana Pay Max. Saved Cards per Customer, you limit the number. When selecting the payment method, the three most recent cards are displayed; additional ones are available under More.
Entering a credit card when selecting the payment method and saving it for future orders
Saved credit card in the customer account under Payment methods
Collana Pay: express checkout with Apple Pay and Google PayIn the basket, your customers can now pay with Apple Pay or Google Pay via an express button. Apple Pay appears on Apple devices, Google Pay on all others. The buttons are displayed together with PayPal Express and Amazon Pay in a uniform grid.If desired, you can additionally display the express buttons in the first order step above the contact details. You enable this for each shop in Business Central. Voucher orders can also be paid via express checkout.
Express buttons for Google Pay, PayPal Express, and Amazon Pay in the basket
Live search preview in the search fieldIn b2c, b2b, and catalog shops, your customers see a preview with products, categories, and search terms from three characters onwards. Products appear with image, name, item number, and price. Via Show all results, they reach the results page. Permissions, assortment restrictions, and prices match those of the results page.The preview can be operated entirely by keyboard and opens below the search field on mobile devices. It is active in the standard themes. You disable it with shopConfig.searchSuggestions.enabled: false. If your shop uses Algolia, the preview remains disabled automatically.
Live search preview with products, categories, and search terms in the search field

  • Back-in-stock notification revised - The creation and sending of notifications have been restructured. The frontend has been adapted, and end-to-end tests safeguard the process
  • CleverReach templates - New responsive newsletter base templates for b2c and b2b
  • Payment methods in the customer account - Saved cards appear as tiles with a logo. In the checkout, the selected payment method receives an accent border
  • Collana Pay: faster page load - dynamic commerce loads the card form and express buttons only after the page has been built. Basket and checkout no longer wait for the payment service provider
  • Collana Pay: expired cards - A nightly run revokes expired cards at Collana
  • Apple Pay domain verification - The shop delivers the verification file itself, even behind basic auth. If you use a different payment service provider, place its file under userdata/applepay/, optionally for each domain
  • Collana Pay client - The client now uses API v2. It automatically retries calls that do not move money in the event of errors
  • Item slider - You control spacing via a CSS variable. No additional spacing is created within a container anymore
  • Test coverage - New Codeception tests cover the b2c and b2b customer account with overview, addresses, order history, document archive, and users, as well as voucher and express checkout. In addition, there are characterization tests for basket, VAT, and price functions
Items & item list
  • Back-in-stock notification - Notification emails are sent reliably again
  • Item list: variant links - Lazy-loaded variants link to the correct item card
  • Item list: keyboard navigation - The tab order follows the page structure again. The quantity field no longer interrupts it
Prices & vouchers
  • VAT with mixed tax rates - Discounts, vouchers, and surcharges are distributed according to the actual tax rate. For quantities above 1, VAT and net amount per tax rate are correct, and a negative VAT line no longer appears in the basket. VAT on shipping is retained even for fully discounted goods
  • Voucher purchase - Voucher orders no longer carry the shipping method and shipping costs of the normal basket. The normal basket is retained after a voucher purchase
Order & checkout
  • Order completion: delivery country USA - Orders with delivery country USA no longer abort after saving
  • Order completion without transaction ID - A completion without a transaction ID no longer completes other orders
  • Subscription checkout - An aborted subscription checkout no longer turns the next normal order in the session into a subscription order. The first step displays the shipping costs correctly again
  • Order emails - Gmail displays the colors correctly. The logo path no longer contains the domain name twice
  • Customer statistics - Customer number and name are displayed side by side again
Payment
  • Collana Pay Express: confirmation page - After Buy, express orders land on the confirmation page instead of on the home page with the message “Order has already been submitted”
  • Collana Pay Express: address from the wallet - If the delivery address from Google Pay, PayPal, or Amazon Pay does not match the shipping costs or the billing country is not permitted in the shop, no booking takes place. Your customers land in the first order step with a notice
  • Collana Pay Express: cancellation - A cancelled express checkout returns to the originating page. The buttons are then rebuilt
  • Collana Pay: already paid order - A resubmitted, already paid checkout shows a notice page instead of a second order completion. Asynchronous payment callbacks complete the order reliably
  • Collana Pay: basket lines - Line amounts with decimal quantities are correct. The voucher line carries an item number, and a shipping line of €0 is omitted. dynamic commerce derives VAT uniformly from the gross amount
  • Computop callbacks - Declined card payments no longer land on an empty error page. dynamic commerce reads the session ID from the shop data
Security
  • Digital vouchers - Digital vouchers are protected against SQL injection and can only be retrieved in the session that created them
  • Sensitive data in the log - dynamic commerce masks API keys, HMAC keys, secrets, and tokens in the NavConnect log. The Collana API key no longer appears in logs
  • Collana Pay: double charge - A lock prevents a resubmission from charging the card twice. dynamic commerce does not automatically retry calls that move money
September 2026
HighlightsCategory-specific templatesFor each root category, you can store custom templates for the item list, the item card, and the shop navigation. This allows you to design individual assortments differently without changing the shop code.
  • Sticky boxes without JavaScript - Sticky boxes such as the order box on the item card now use position: sticky. This reduces script code and prevents jumps when scrolling
  • Load phone number library on demand - dynamic commerce loads the library only when needed and via a fixed cache URL
  • Test coverage - Codeception tests use their own test data instead of the demo data. New end-to-end tests cover the b2b user account, sales representative login, and category permissions. In addition, there are unit tests for repository, cache, and attribute logic
  • Cleanup - Unused AJAX endpoints have been removed. Repository and collection classes have unambiguous types. The campaign factory receives its logger via dependency injection, and the password parameter of the database wrapper is marked as sensitive
Items & item card
  • Direct order: price column - Now shows the unit price instead of the line amount, matching the item list and basket
  • Duplicate item attributes - Identical attributes on variant and parent item now appear only once on the item card
  • Item sorting - The item number serves as a secondary sort criterion so that the order remains stable for identical values
  • Catalog item card - The sticky order bar has been removed in the catalog shop
Order & payment
  • Basket after session change - dynamic commerce reliably applies a new session ID to the visitor record. Baskets and other session-bound data are retained
  • Campaigns with invalid free item - Faulty campaigns are logged and skipped. Page rendering and subsequent campaigns continue
  • Discounts from Business Central - Discounts permitted in Business Central no longer result in a blank page in the shop
  • Document archive - Invoices are no longer incorrectly set to the status “completed”
  • CollanaPay callback - A missing database connection no longer aborts email sending in the callback. Logging provides more details
Permissions & security
  • Customer permissions - Exclusion rules now apply only to the intended company, shop, and respective language
  • Sensitive data in the log - dynamic commerce no longer writes credentials from web forms and feed generation to the log
  • Shop code - The shop_code parameter is protected against SQL injection
Feeds & tracking
  • Google Merchant feed - If credentials are missing, the feed no longer generates an error. Google can still retrieve it directly
  • Tag Manager: order completion - Fixed a possible type error when reading the phone number in the purchase event
Operations
  • Channable lock file - An orphaned lock file no longer stops the entire cron run
  • Cron jobs - The message “Cronjob already running” is logged as a warning instead of an error
August 2026
HighlightsFlexibly configurable dealer searchYou can now adapt the dealer search to your market: the starting location of the search can be maintained, and you control the number of dealers displayed via the block or the shop configuration. When customers select a dealer, additional dealer data is stored directly on the customer record.
Dealer search configuration with starting location and number of dealers
b2b: VAT based on the customer’s VAT business posting groupIn the b2b checkout, VAT is now based on the VAT business posting group stored on the customer. As a result, the web document and the BC document match even in deviating tax constellations, such as other EU countries or reverse charge.b2c customer account: order history & document archiveThe order history now loads page by page from the server, so even accounts with many orders open significantly faster. In addition, your customers can search directly for a document number and also find their shipments in the document archive. Order details of voucher orders are no longer empty, and customers can maintain their phone number themselves in the account.Field lengths aligned between BC and webThe database columns in the shop now match the definitions from Business Central: item descriptions hold 200 characters, and amount columns in basket and document calculate with four decimal places. Truncated texts and rounding differences when importing from BC no longer occur.Security hardening in the shopThe shop now reads page parameters centrally and in a type-safe manner, which additionally protects against XSS and SQL injection. File names from uploads are sanitized, and the server enforces the password criteria during registration in addition to the check in the browser.
  • Configurable cross-selling - Number of displayed cross-sellers configurable per theme
  • VAT queries cached - The tax rate determination per product posting group has been extracted and cached
  • NAV logging can be throttled - Maximum line length for the JSON request logging of the NAV interface is configurable
  • Solr integration removed - The discontinued Solr search, including configuration and pipeline remnants, has been removed
  • Test coverage - New end-to-end tests for b2c registration, campaigns, b2b order process, and item card; new unit tests for AdvancedPriceProvider and item availability; unstable tests stabilized
Items & item card
  • Item list with variants - “Add all to basket” added only the first item of the list
  • Item detail: variant vs. parent item - Configurable via the shop configuration whether the first variant or the parent item is displayed; the title now shows only the name of the parent item
  • Order button (buy box) - Correctly disabled without order permission or without an active customer
  • Item reviews - Empty state box when no review exists for an item yet
  • Item descriptions from text modules - Were no longer displayed; title is resolved local-first
  • Descriptions of subordinate items - Are now output
  • Customized items - More unique customization hash, clean error handling during upload, scalar hash for the basket line
  • Item card: basket fallback (b2c) - Fallback path repaired
  • Item card: thumbnails - Respond to clicks again
  • Brand attribute as name prefix - Is prepended even without a brand icon
  • Rich snippets - Item card markup updated
Search & filters
  • Item search: umlauts - HTML-encoded umlauts and ß are found
  • Attribute filter - Incorrect column name (lenght) corrected; filter order deterministic, global filters first
  • Top seller block - Sorts by sales rank instead of item ID
  • Algolia search results - Price text corrected
Prices & vouchers
  • Vouchers set VAT to zero - Value vouchers zeroed out the tax amount of the document line
  • Invoice discount: VAT correction - The tax correction scales by the taxable discount share instead of the group total
  • Shipping voucher - Is no longer overwritten by percentage-based shipping costs
  • Price: negative result - Very high discounts resulted in negative prices
Basket & order
  • Free items in the basket - Are displayed in the basket and mini basket without price output
  • Basket button - Uses the configured TextProvider (correct translations)
  • Checkout checkbox - Markup of the text module corrected
  • Order history: variant images - Variants without their own image show the image of the parent item
  • Subscription overview - Restricted to the current shop and current language
b2b
  • b2b checkout: addresses - The default delivery address can be selected again; creating an address no longer overwrites the contact person
  • b2b: quote request - NULL guard for empty delivery date on insert
  • b2b: user management - Modal for new users is rendered when needed; permissions remain editable
  • Main user rights - Blanket order permission of the main user corrected
  • Welcome texts - Main user placeholder is no longer displayed in the text
Account & email
  • Forgot password without email (catalog shop) - User email texts are inherited from the shop of the customer master; shops without their own texts send the email again
  • Password reset - Redirect to login after resetting
  • Phone number input - Country code removes the leading 0, formatting adjusted
  • Email footer - %linkToShop% placeholder is replaced; /userdata/ paths are made absolute only for relative URLs
  • Order email: image sizes - Image dimensions are calculated for the template, with error handling for unreadable files
Interfaces & other
  • NAV: item renaming - rename_item is filtered by company
  • NAV: customer login - send_customer_login also checks the company
  • Login email change - Is flagged for pickup by BC
  • Shop company cleaner - Faulty table query in UnlinkedShopCompanyCleaner corrected
  • Header overflow - No more overflow caused by the AI button; flash message position at the top
July 2026
HighlightsPasswordless login (OTP)b2c customers can now sign in entirely without a password, simply using a code from the email, and can also register directly this way. The login form offers either password or email code (as a theme setting). Previous guest orders automatically appear in the customer account after login.
Passwordless login for b2c customers via email code
E-invoiceCustomers can now request their invoice as an e-invoice via a new block in the shop. Delivery is made to the signed-in user, just as with the familiar invoice copy.
Requesting an e-invoice in the document archive
New price engine (KUMAVISION support)In addition to our proven standard price determination, dynamic commerce now also supports the price determination of our partner KUMAVISION. This lets you choose the appropriate pricing model, including custom discount classes, discounts on item groups, and fallback rules at line level. Extensive new tests ensure that every price is reliably correct.Payment options based on order amountPayment methods can now be linked to the order total: using a minimum and maximum amount, you define when a payment method is available. This is ideal, for example, for offering purchase on invoice only above a certain basket value.Weighted searchThe shop search now delivers more relevant results: hits are sorted by weighted relevance instead of purely by match, so customers find the right items faster.
  • CurrencyManager throughout - Uniform price formatting with rounding methods, symbol resolution, and locale support; integrated into format_amount and KumaPriceProvider, broad test coverage
  • Favorites: shop code - Favorites are managed per shop (shop_code)
  • Discount formatting unified - Rule discounts use a shared value formatting
  • Registration: text management - Texts via RegionalizedTextProvider instead of GLOBALS
  • Cleanup - ESAG-specific code removed, unused queries/columns and discount type field removed from Kuma migrations, namespace fixes
Basket & order
  • Basket: VAT calculation - Incorrect VAT calculation in GenericUserBasket corrected
  • Campaigns: free items stacked up - Free items were added multiple times when reloading the basket
  • Order confirmation: shipping cost line (b2c) - Shipping costs were missing in the confirmation email
  • Order confirmation: customized items - Labeling in confirmation and customer account
  • Direct order: sticky bar - Item counter was not updated after removing a line
  • Quotes: basket tabs - Tabs now appear only when quotation is permitted
Prices & payment
  • Kuma discounts applied twice - Discounts from the PriceProvider are no longer applied additionally
  • CollanaPay: resilience - Checkout withstands outages of the payment service provider; no more external calls from tests
  • Item list: strikethrough price - Strikethrough prices are also displayed in the signed-in item list
Account & address
  • b2c registration - Form routing to the registration handler and error feedback repaired; confirmation email with “here” placeholder
  • Delivery address: phone number - Field phone_no instead of telephone; phone number is correctly cleared when changing the address
  • Customer attributes - PrimaryContactNo and other attributes are correctly applied
  • Login: session only in DB - open_customer_login did not work when the session ID existed only in the DB
Tracking
  • Tag Manager: consent states - Consent output now independent of the GTM container ID
  • Tracking: Jentis on websites without a shop - Script was not output on websites without a shop
Security & other
  • Security: SQL injection hardening - Variables consistently bound as parameters in prepared statements
  • Item comments: false spam warning - Manually reloading after submitting a comment incorrectly triggered a spam suspicion
  • b2b: shipping options - Defined $shopConfig is passed to getShippingOptions
  • Google Merchant: field name - sales_price corrected to sale_price
  • Layout: order button in item box - Alignment corrected
June 2026
Bug Fixes
  • Order process: apostrophe in customer names - Backslash escaping was written literally to the DB
  • Order process: phone number not editable - Signed-in b2c customers could not change the phone number in the checkout
  • Order process: hard error with unexpected data - Faulty address expectations crashed the checkout instead of responding gracefully
  • Collana Pay: crash without shipping options - Shops without a configured shipping method crashed during Collana payment
  • Order history: VAT and sorting - Incorrect tax calculation and faulty sorting in the order overview
  • Voucher: key generation + percentage/amount logic - Coupon key collisions and simultaneous setting of amount+percentage fixed
  • Catalog layout: display errors - Faulty CSS output in the catalog frontend
  • Currency: formatting of float(-0) - Negative sign removed for zero amounts
  • Price: quantity change without set price data - Price was not correctly initialized on qty update
  • Item variants: permission check - Navigation variants checked the wrong class
  • Firefox: incorrect mobile detection - Touch device detection identified Firefox desktop as a mobile device
  • Address: cast salutation as integer - Incorrect data type for salutation caused errors
  • User creation: reject duplicate email - New shop users could be created with an already existing email
  • Operator precedence: missing parentheses - Condition evaluation returned an incorrect result
  • Footer: width and cancellation information - b2c footer layout and cancellation info corrected
  • Modal: title and footer centered - Info/error/success modals aligned uniformly
  • Comment: max length - Name field in item comments without length limit
  • Shipping weight: packing unit ignored - Packing unit multiplier was not taken into account in weight calculation
  • Category: initialization - Category global correctly initialized via CategoryService and request_uri
Features & Improvements
  • Subscription management - Subscription orders in basket, payment, price/shipping/voucher merging, promotion fields
  • Filter options: hide empty/non-qualified - Unavailable filter values are hidden automatically
  • Brand search - Full-text search finds items via brand names
  • Top seller display - Site part for automatically displaying bestsellers
  • RMA: accessibility + image upload - Returns form made more accessible, images can be uploaded
  • Scrollbar: linear control with loop - Horizontal scrollbar with optional linear behavior and infinite loop
  • Icons for quotes and blanket orders - New icons in the customer area for quotes/blanket orders
  • Non-permitted countries in the address modal - List of blocked delivery countries is displayed directly in the order dialog
  • Sales representative breadcrumb - Link back to the sales representative account visible in the breadcrumb
  • Blanket orders: quantity display - Spacer between quantity fields for better readability
  • Refactoring: ItemFiles → repository - Image queries moved from the decorator to WebshopItemFileRepository
  • Refactoring: user factory - Decision on which repository to use moved to a separate factory
  • Refactoring: permissions - Permission merging extracted into its own function
  • Refactoring: campaign interface - CampaignRuleHelper now uses the interface instead of concrete classes
  • Cleanup - mcrypt dependency removed, CustomerPermissionGroupDecorator removed, show_random_items removed
May 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
March 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
February 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
December 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
October 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
July 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
June 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.
May 2025
April 2025
March 2025
February 2025
January 2025
December 2024
November 2024
October 2024
September 2024
August 2024
June 2024
May 2024
April 2024
March 2024
February 2024
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
July 2023
June 2023
April 2023
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021