Umbraco Commerce v13.1.0-RC release notes.
Umbraco Commerce v13.1.0-RC introduces two new exciting strategies for shipping calculation. With these new calculation strategies, calculating shipping costs has become ever more flexible allowing you to have fine grained control over your shipping rates.
Added dynamic shipping rates feature for range based rates calculaton.
Added realtime shipping rates feature for up to the minute, shipping operator shipping quotes.
A number of API updates to accomodate the new shipping features.
Add-on updates are also neccesarry for this release.
With the new dynamic shipping rates feature, it is now possible to define range-based shipping rates configurations. This allows you to adjust shipping costs based on the state of your customer's order. No longer are you tied to a single inflexible fixed rate. Want to charge an excess for bulky/heavy items? no problem. Want to offer cheaper rates for small orders? we got you.
With dynamic shipping rates, you are in full control over every aspect of your rates calculation process.
Be sure to checkout the Dynamic Shipping Rates documentation for how to get started with them.
With dynamic shipping rates, you aren't only tied to the ranges and rate options we provide out of the box. As with much of the Umbraco Commerce API, we've made these fully pluggable to allow you to be able to define your own. With pluggable range/rate providers, you can truly make dynamic shipping rates tailored to your customer's needs.
Be sure to read the Shipping Range & Rate Providers documentation for details on how to setup your own providers.
With the new realtime shipping rates feature, it is now possible to fetch realtime, up to the minute shipping rates directly from your shipping operator. With realtime rates you can be sure that your shipping rates are as accurate as they can be with minimal configuration required.
Be sure to checkout the Realtime Shipping Rates documentation for how to get started with them.
The secret behind realtime rates is the new Shipping Providers API. Shipping Providers define a minimal API to encapsulate communication with shipping operators. As you might expect, these are fully pluggable allowing you to work with any shipper operator you and your customers require.
To help you get started, we are releasing three example shipping providers with this release:
All of these providers are fully open-source so you can see exactly how they work, and use them as a starting point for custom integrations.
The dynamic and realtime shipping features also required some updates to other areas of the Umbraco Commerce API. Details of these updates can be found below.
To allow shipments to have more dynamic calculations, it's now necessary to know where products are shipping from, not only where they are shipping to. The handle this, store entities now have a Locations child configuration area that allows you to define store locations.
We currently only support a store having a single location which is selected on the Store settings screen via the Default Location setting. We'll be looking in the future to support stores having multiple warehouse locations.
Another important aspect of shipping calculations is defining packages along with their dimensions and weight. Umbraco Commerce comes with an out-of-the-box package algorithm. However, with products being stackable in many different ways, we've made this pluggable too to allow you to create more specific packaging logic.
See the Shipping Packing Factories concept documentation for more details.
With the shipping packing factories, it also becomes necessary to capture the physical dimensions and weight of the individual products. To help with this, Umbraco Commerce now comes with a Measurements property editor to allow you to define all the physical attributes of your products.
We've also made it so that you can configure your prefered measurement system (metric or imperial) via a setting on the Store node. This setting has a new Measurements property editor taking this into account.
There is a fundamental change that arises with the new dynamic and real-time shipping rates. And that is that it's now no longer possible to retrieve a shipping rate from a shipping method, without a reference order. Additionally, many shipping operators offer different products and services. This means that shipping methods are now able to return multiple rate values for a given rate request.
To accommodate this some APIs have been, such as the shipping method CalculatePrices
method is being replaced with TryCalculateRates
that accepts an order, and can return multiple rates. In addition, we've also updated the SetShippingMethod
API on the order to support passing in a ShippingOption
to identify which rate option from the shipping operator is being selected.
These changes have also been made to the Storefront API with some older endpoints becoming deprecated, and new ones being created for these new approaches.
To maintain backward compatibility, the old APIs are still present, but these will only work with return fixed-rate shipping method definitions.
In addition to the core Umbraco Commerce changes, updates to the following add-on packages will also be made:
Umbraco.Commerce.Deploy - Supports the store and shipping method updates as well as the new locations model.
Umbraco.Commerce.Checkout - Adds support for displaying/selecting shipping rates on the front end.
Get an overview of the changes and fixes in each version of Umbraco Commerce.
In this section, we have summarized the changes to Umbraco Commerce that were released in each version. Each version has a link to the Commerce issue tracker showing a list of issues resolved in the release. We also link to the individual issues themselves from the detail.
If there are any breaking changes or other issues to be aware of when upgrading they are also noted here.
If you are upgrading to a new major version, check the breaking changes in the Version Specific Upgrade Notes article.
This section contains the release notes for Umbraco Commerce 13 including all changes for this version.
Fixed Rounding issue between Umbraco Commerce and Stripe payment gateway #580.
Important If you are running on version 13 of Umbraco Commerce it is advised to upgrade to this version as soon as possible. Changes in .NET 8.0.8 cause an error in our EntityCache
which have been resolved in this release. With some hosting providers automatically applying .NET patch releases, upgrading should be proritised to avoid any unintentional breakages.
Fixed Exception on GetOrCreateCurrentOrder in SessionManager #581.
Fixed regressions due to updates from 13.1.6 not getting merged back into main project #576.
Fixed bug in group discounts provider based on the issue described in #574.
Fixed regression in EntityCache updates from 13.1.7/13.1.8 failing under load #573.
Fixed bug in Order search API throwing ORDER BY clause exception #571.
Fixed bug in Country create dialog failing if Regions exist within another store instance #568.
Fixed Price Adjustments applied to bundle sub order line not reflected in the bundle unit price #564.
Belt and brace updates to EntityCache and added a logger to log if an attempt is made to set a NULL
key #565.
Fixed issue where the EntityCache fail after the .NET Software Development Kit (SDK) update #565.
Check the config for being undefined in order's edit properties dialog.
Fixed issue with the Storefront API hosted checkout not rendering form attributes #532.
Fixed issue with 13.1.5 migration scripts using too new a feature #539.
Fixed issue with stock synchronizer prematurely looking up a store #536.
Updated pessimistic locking on the payment provider callback endpoints to lock from the start of the request, not when processing the callback.
Added new IRoundingService
to allow overriding the default rounding behavior #506.
Added pessimistic locking to the payment provider callback endpoint to prevent concurrency issues if the endpoint is called too many times at once #533.
Fixed issue with malformed script tags in the Storefront API hosted checkout pay endpoint #532.
Fixed percentage discounts not taking the stores rounding method into account during calculation #506.
Fixed issue where order lines with a zero value would cause a concurrency exception due to the fact their prices aren't frozen but the order recalculation process was attempting to refreeze them.
Fixed error with realtime shipping rates provider where the rate cache duration was zero.
Updated MemoryCache
usages to fallback to a default implementation if one isn't found in the DI container.
Updated Order properties to trim whitespace around values to prevent unexpected behavior #528.
Updated all currency database tables to support 8 decimal places to prevent rounding issues with order quantities above 1000 #506.
Fixed error in SearchOrder
when searching with date ranges #496.
Fixed properties set in the background from an entity action lost when resaving the entity from the UI after the action (wasn't fully fixed in 13.1.2) #472.
Fixed orderline properties not showing in orderline summary by default due to regression from strongly typing UI config files in 13.1.0 #494.
Added support for localhost sub domains in dev license #493.
Added a WithUmbracoBuilder
extension for IUmbracoCommerceBuilder
to allow access to the Umbraco configuration within an Umbraco Commerce registration.
Fixed properties set in the background from an entity action lost when resaving the entity from the UI after the action #472.
Fixed unable to override cart editor view like you can the order editor view #474.
Fixed regression where launching the shipping method country prices dialog caused JavaScript errors #480.
Fixed regression with order list configs not deserializing correctly #485.
Fixed Order.ProductVariantReference
mapping to the wrong field in Storefront API.
Fixed CountryRegionTaxRate.Country
mapping to the wrong field in Storefront API.
Added better validation error messages when saving locations missing required fields #481.
Fixed regression where custom order/cart editor view stopped working #469.
Fixed issue with Locations not deleting #470.
Fixed issue with date range order searches not working correctly #468.
Minor release closing off the RC period.
Fixed null exceptions when creating shipping methods with empty config.
Added helper methods to FixedRateShippingCalculationConfig
to make it's API closer to the older fixed rate price lookup API.
Fixed missing SQL Server migrations.
Fixed realtime shipping rates cache not taking shipping country/region changes into account.
Fixed realtime shipping rates cache not taking store default location changes into account.
Fixed error in SafeLazy not taking null into account and so causing errors when an entity cache entry is evicted #466.
Updated Umbraco.Licenses
version dependency to the latest.
Made WithUmbracoCommerceBuilder
extension public to allow accessing the IUmbracoCommerceBuilder
instance outside of the AddUmbracoCommerce
call.
Fixed RC1 regression where discount/gift card tree icons were broken.
Fixed RC1 regression where localized translations were broken.
Fixed issue in dynamic shipping subtotal range provider not taking the current calculation context into account and so was selecting the wrong range.
Read the v13.1.0-RC release post for further background on this release.
Adds dynamic shipping rate calculation option.
Adds real-time shipping rate calculation option via Shipping Providers.
Adds store locations for shipping calculations.
Adds store Measurement System setting.
Adds Measurements property editor for capturing product measurements for shipping calculations.
Adds shipping package factory concept for calculating packages for shipments.
Updates the shipping method create-flow to require selecting a shipping provider and a shipping calculation mode.
Updates API for calculating shipping prices as payment methods can now return multiple rates.
Updates the order API for setting the shipping method to accept a ShippingOption
for shipping methods that can supply multiple rates.
Updates the order editor to display the selected shipping option.
Updates the cart editor to allow selecting a shipping option from real-time shipping methods.
Updates the cart editor to calculate shipping rates/payment fees based on the current in-memory cart state.
Updates storefront API to incorporate new shipping rates endpoints.
Fixed error in SafeLazy not taking null into account and so causing errors when an entity cache entry is evicted #466.
Reset request stream before passing to payment providers.
Added licensing fallback to use any previously validated license within the last 7 days.
Updated Umbraco.Licenses
version dependency to the latest.
Made WithUmbracoCommerceBuilder
extension public to allow accessing the IUmbracoCommerceBuilder
instance outside of the AddUmbracoCommerce
call.
Upgraded to run again Umbraco v13 and .NET 8
Upgraded all 3rd party dependencies
Fixed Cross-site scripting (XSS) issue in email/print templates
You can find the release notes for Vendr in the Change log file on Github.