Skip to main content
August 2026
HighlightsFlexibly configurable dealer searchYou can now adapt the dealer search to your market: the starting location of the search is maintainable, and you control the number of dealers displayed via the building block or the shop configuration. When customers select a dealer, additional dealer data is stored directly in the customer record.
Configuration of the dealer search with starting location and number of dealers
b2b: VAT based on the customer’s VAT business posting groupIn the b2b checkout, VAT is now determined by the VAT business posting group stored in the customer record. This ensures that the web document and BC document match even in the case of differing tax constellations, such as for other EU countries or reverse charge.b2c customer account: order history & document archiveThe order history now loads page by page from the server - even accounts with many orders open significantly faster as a result. In addition, your customers can search directly for a document number and also find their deliveries in the document archive. Order details of voucher orders no longer remain 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 correspond to the definitions from Business Central: item descriptions hold 200 characters, and amount columns in the shopping cart and document calculate with four decimal places. Truncated texts and rounding discrepancies during transfer from BC therefore no longer occur.Security hardening in the shopThe shop now reads page parameters centrally and type-safely - this additionally blocks 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.
  • Cross-selling configurable - Number of displayed cross-sellers configurable per theme
  • VAT queries cached - The tax rate determination per product posting group was extracted and cached
  • NAV logging throttleable - Maximum line length for the JSON request logging of the NAV interface is configurable
  • Solr integration removed - The deprecated Solr search including configuration and pipeline remnants was 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 cart” only added the first item of the list
  • Item detail: variant vs. master item - Controllable via the shop configuration whether the first variant or the master item is displayed; the title now only shows the name of the master item
  • Order button (buybox) - Correctly locked without ordering rights or without an active customer
  • Item reviews - Empty-state box when no review exists yet for an item
  • Item descriptions from text modules - Were no longer displayed; the 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 cart line
  • Item card: cart 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 & filter
  • Item search: umlauts - HTML-encoded umlauts and ß are found
  • Attribute filter - Incorrect column name (lenght) corrected; filter order made deterministic, global filters first
  • Top seller building block - Sorted by sales rank instead of by 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 according to the taxable discount share instead of the group total
  • Shipping voucher - Was no longer overwritten by percentage-based shipping costs
  • Price: negative result - Very high discounts led to negative prices
Shopping cart & order
  • Free items in the cart - Are displayed in the cart and mini-basket without price output
  • Cart 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 master item
  • Subscription overview - Restricted to the current shop and current language
b2b
  • b2b checkout: addresses - The default delivery address is selectable again, and creating an address no longer overwrites the contact person
  • b2b: quote request - NULL guard for an 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 mail (catalog shop) - User mail texts are inherited from the shop of the customer master; shops without their own texts send the mail again
  • Password reset - Redirect to login after resetting
  • Phone number entry - Country code removes the leading 0, formatting adjusted
  • Email footer - %linkToShop% placeholder is replaced; /userdata/ paths are made absolute only for relative URLs
  • Order mail: image sizes - Image dimensions are calculated for the template, with error handling for unreadable files
Interfaces & miscellaneous
  • NAV: item renaming - rename_item is filtered by company
  • NAV: customer login - send_customer_login also checks the company
  • Login email change - Is marked for retrieval by BC
  • Shop company cleaner - Faulty table query in the UnlinkedShopCompanyCleaner corrected
  • Header overflow - No more overflow caused by the AI button; flash message positioned at the top
July 2026
HighlightsPasswordless login (OTP)b2c customers now sign in completely without a password - simply via a code from the email - and can thus also register directly. The login mask offers either password or email code (as a theme setting). Earlier guest orders automatically appear in the customer account after login.
Passwordless login for b2c customers via email code
E-invoiceCustomers now request their invoice as an e-invoice - via a new building block in the shop. Delivery takes place to the logged-in user, exactly as with the usual invoice copy.
Request 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 its own 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 from when a payment method is available - ideal, for example, to offer purchase on account only above a certain cart value.Weighted searchThe shop search now delivers more relevant results: hits are sorted by weighted relevance instead of purely by match - 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 maintained per shop (shop_code)
  • Discount formatting unified - Rule discounts use a common value formatting
  • Registration: text management - Texts via RegionalizedTextProvider instead of GLOBALS
  • Cleanup work - ESAG special code removed, unused queries/columns and discount-type field removed from Kuma migrations, namespace fixes
Shopping cart & order
  • Cart: VAT calculation - Incorrect VAT calculation in the GenericUserBasket corrected
  • Campaigns: free items stacked up - Free items were added multiple times when reloading the cart
  • Order confirmation: shipping cost line (b2c) - Shipping costs were missing in the confirmation mail
  • Order confirmation: customized items - Marking in the confirmation and customer account
  • Direct order: sticky bar - Item counter was not updated after removing a line
  • Quotes: cart tabs - Tabs only appear if a quotation is allowed
Prices & payment
  • Kuma discounts applied twice - Discounts from the PriceProvider are no longer additionally applied
  • CollanaPay: fault tolerance - Checkout survives outages of the payment service provider; no more external calls from tests
  • Item list: crossed-out price - Crossed-out prices are also displayed in the logged-in item list
Account & address
  • b2c registration - Form routing to the registration handler and error feedback repaired; confirmation mail with “here” placeholder
  • Delivery address: phone number - Field phone_no instead of telephone; phone number is correctly cleared when the address is changed
  • Customer attributes - PrimaryContactNo and other attributes taken over correctly
  • Login: session only in DB - open_customer_login did not work if the session ID only existed in the DB
Tracking
  • Tag Manager: consent states - Consent output is now independent of the GTM container ID
  • Tracking: Jentis on shop-less websites - Script was not output on websites without a shop
Security & miscellaneous
  • Security: SQL injection hardening - Variables consistently bound as parameters in prepared statements
  • Item comments: false spam alert - Manual reloading after submitting a comment falsely triggered 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 itembox - Alignment corrected
June 2026
Bug Fixes
  • Order process: apostrophe in customer name - Backslash escaping was written literally into the DB
  • Order process: phone number not editable - Logged-in b2c customers could not change the phone number in checkout
  • Order process: hard error on unexpected data - Faulty address expectations crashed the checkout instead of reacting 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 + percent/amount logic - Coupon key collisions and simultaneous setting of amount+percent fixed
  • Catalog layout: display error - 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: false mobile detection - Touch device detection recognized Firefox Desktop as a mobile device
  • Address: cast salutation as integer - Incorrect data type for salutation led to errors
  • User creation: reject duplicate email - New shop users could be created with an already existing mail
  • Operator priority: 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 cart, payment, price/shipping/voucher merging, promotion fields
  • Filter options: hide empty/unqualified - Unavailable filter values are automatically hidden
  • Brand search - Full-text search finds items via brand names
  • Top seller display - Sitepart for the automatic display of 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 endless 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
  • Salesperson breadcrumb - Link back to the salesperson account visible in the breadcrumb
  • Blanket Orders: quantity display - Spacers between quantity fields for better readability
  • Refactoring: ItemFiles → Repository - Image queries moved from the decorator to the WebshopItemFileRepository
  • Refactoring: user factory - Decision on which repository is used 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 work - 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