Release Notes

Ucommerce 10.1.1


Bug Fixes

  • (Backoffice) Changing language will now update labels on custom fields.

  • (Backoffice) Lazy loading fixed in products app, now works regardless of screen height.

  • (Backoffice) The result count when searching will now show in the correct format.

  • (Backoffice) After updating a product the product list will update with the correct values.

  • (Search) Sorting on product unit price now sorts the result correctly. This was caused by the index definition defining the values as long instead of floating points.

Ucommerce 10.1.0


Breaking changes

  • We improved setting up an external identity provider for our Backoffice. See documentation for details.


  • It is now possible to assign store permissions to individual users.

  • A user will be created or updated when using an external identity provider. See documentation for details.

  • It is now possible to rebuild the search index and/or check the status from Backoffice -> Settings -> Search - rebuild index.

  • It is now possible to undo the deletion of promotions.

  • It is now possible to undo the update of a criterion or discount.

Bug Fixes

  • Undo widgets in Backoffice will disappear if the route changes.

Ucommerce 10.0.1



  • It is now easier to add and edit the checkout pipelines through the PaymentBuilder.CheckoutPipelines property. See documentation for details.

  • It is now possible to add and edit order processing pipelines through the PaymentBuilder.OrderProcessingPipelines property. See documentation for details.

  • When a user searches within any searchable list in the back office, it is now possible to change the focus on search results using the arrow keys and to open a selected item by pressing the Enter key.

  • A new type; UserDefinedEnum, was created to be used for index definitions on fields containing user-defined enums.

  • Using the UserDefinedEnum type, multilingual user-defined enums can now display the appropriate display name while using the enum's value for queries.

Bug Fixes

  • Order processing pipelines are now triggered correctly on order status updates.

  • Fixed an issue where the selection of a catalog criteria in the promotions page caused an error.

  • The product page -> Display name is now correctly set as required.

  • The product page -> No longer displays the variants section for products that can not have variants.

  • Product page -> Focusing and unfocusing the Long Description now only sends a PATCH request if any changes were made.

  • CatalogLibrary.GetFacets() returns the expected facets now.

  • Faceted search returns the correct products.

  • Using the UserDefinedEnum type, multilingual user-defined enums are now displayed correctly.

  • Parent products no longer index all language versions of enum variant properties.


  • Raw search capabilities for Elasticsearch have been moved out of Ucommerce.Extensions.Search.Abstractions. They are now available as extension methods on IIndex using the namespace Ucommerce.Search.Elastic.Extensions. Note: The extension methods will throw an exception if the IIndex instance is not ElasticsearchIndex

  • The unused table uCommerce_ProductCatalogGroupTarget has been removed from the database. This table was used to link a promotion to a store. This is now done using the campaign.

Ucommerce 10.0.0



  • Changing the priority of promotions is now undoable.

  • Deleting a campaign is now undoable.

  • Adds convenience accessors to UCommerceDBContext for

    • Catalogs,

    • Customers,

    • PriceGroups,

    • ShippingMethods,

    • Users,

    • Campaigns,

    • Carts,

    • Orders,

    • Products,

    • Categories and

    • Stores

Breaking changes

  • Migrated the search driver from Elasticsearch.Net and NEST 7.17.5 to Elastic.Clients.Elasticsearch 8.11.0

    • There will be a need to update any existing search configurations. Please refer to the Configuration documentation for further information.

  • Upgraded from .Net 7 to .Net 8

  • Changed signature of GetPrices in IPriceCalculationService - removing intermediate value object

  • Renamed WebSiteControllerBase to HeadlessControllerBase for better readability for partner developers.

  • The default back office URL moved from /ucommerce-ui/ to /ucommerce/

Bug fixes

  • Price group validation now happens before updates in headless calls - meaning a wrong price group guid will now actually block the update of the entity.

  • Fixed an issue where having no stores at all would cause errors in the back office.

    • If no store exists, the sidebar tabs for catalogs, products, orders, and promotions are now hidden.

  • Removed some corrupted data from the default database migration, which caused issues in the default campaign.

  • Fixed an issue with payment provider callbacks not being registered correctly.


Alpha Releases

Alpha 13

Build 4021

Breaking Changes

  • The navigation property called Properties of DefinitionFieldEntity has been removed.

  • The navigation property called ProductDescriptionProperties of ProductDefinitionFieldEntity has been removed.


  • It is now possible to see users' permissions when navigating to the settings app.

  • When clicking the user permissions item on the settings app, it is now possible to see a list of available users.

  • The user entity has been extended with Name and IsAdmin properties. As part of the migration Name is set to ExternalId.

  • The settings area of the backoffice is now only available to users with admin privileges.

The user permissions settings will be added to the backoffice in the next release.


  • Fixed an issue where the ElasticSearch cloud options were not set to use the correct serializer. This meant that custom-defined fields would not be added to the index as they should when they are added to the index definition.

  • Fixed an issue with date pickers on custom definition fields.


  • Guid generation for new entity objects has been moved from an EF Core SavingChanges-interceptor to object creation time.

  • Fewer database calls are needed for security checks.

  • Added cascade on delete for relevant foreign key constraints in the database.

  • Added Ucommerce.Web.Core.Constants.DateFormattingConstants.DEFAULT_DATE_TIME_FORMATTING as a constant for date formatting in Ucommerce.

  • Added helper method ToUcommerceString() as an extension method for DateTime and DateTimeOffset to convert time to UTC and format it using Ucommerce.Web.Core.Constants.DateFormattingConstants.DEFAULT_DATE_TIME_FORMATTING. This aligns with how dates persisted in V9.

    • This method (or the constant above) should be used when importing dates into definitions to make sure that the dates are displayed as expected in Ucommerce.

Alpha 12

Build 4019


  • Search Adorners are now available. This allows you to add custom data to search models. See Custom Data for more details.

  • It is now possible to create, update, edit, and delete order number series from the Backoffice → Settings app → order number series.


  • ElasticSearch Implementation now handles large data sets better.

  • Added logging of execution time for indexing service.

Alpha 11

Build 4017


  • The promotions engine now applies to carts based on the promotions set up in the Backoffice.

  • Changing the priority of campaigns is now undoable.

  • Deleting campaigns is now undoable.

  • The list of campaigns is now searchable.


  • Clicking on "create new campaign" to open the modal will now show the loading state until ready.

  • Creating a new campaign from the Backoffice will now have all the required fields marked with "required".

  • Creating a new campaign from the Backoffice will now have fields disabled while sending a POST request.

Other improvements

  • Scratch indexing was slow for categories containing a large number of products.

Alpha 10

Build 4016


  • Renamed all pipeline tasks that save changes using the DbContext to "SaveChangesPipelineTask" to keep naming consistent


  • It is now possible to create and replace an Index Definition to configure what information will be indexed to ElasticSearch (e.g., custom definition fields).

  • It is now possible to implement product filtering using Faceted Search based on price or any custom definition field.

  • It's now possible to search for menu items in the settings app, and pressing enter will open the highlighted menu item.

  • It's now possible to see, create, edit, and delete product relations from the Backoffice → Settings app → Product relations menu.

  • For all selectable lists in Backoffice, when we start selecting a row, it will switch to select mode, which means the cursor will change to a check sign, and when clicking any row, it will check/uncheck the row instead of opening the edit page.


  • Fixed: When editing order billing or shipping through Backoffice, the country and shipping methods wouldn't show up correctly.

  • Fixed: On the orders app, when a user starts selecting orders to change status, the orders with different statuses should be disabled.

  • Fixed: Product indexer could not find related categories.

  • Fixed: Category indexer could not find related products.

  • Fixed: Product indexer now correctly indexes parent products.

  • Fixed: Existing relations between products and categories when adding a new product to a category would result in duplicates.

  • Fixed: Filtering issue for user-defined multilingual enums when fetching products for indexing.

  • Fixed: User-defined multilingual enums would not be saved correctly when changed in the Backoffice.

Other improvements

  • Fewer database lookups are needed when indexing a category.

Known bugs

  • Product relation names can't be longer than 50 characters. The backend will throw an exception, but the UI doesn't notify the user of the problem.

Alpha 9


  • Refactored the UpdateCart pipeline to CalculateCart and SaveOrder pipeline to CalculateOrder - and updated all other pipelines using those

    • Added the possibility to use entities on the inputs instead of entity GUIDs

    • Added the possibility to optionally not save database changes in these pipelines (they always saved before)


  • Added loading and error states to the product app.

  • Search terms, sort options and render types (search or navigate) are part of query params in backoffice (the user is able to share the search result URL)

  • It is now possible to see the price groups menu item in the settings of the backoffice, and a list of price groups when navigating into it.

  • It is now possible to add a new price group directly from the backoffice.

  • It is now possible to delete a list of price groups and undo deletion in the backoffice settings.

  • It is now possible to edit a price group and undo changes when clicking the undo button after editing from backoffice.

  • Improved index consistency using a persistent queue of entities to add/update/remove from the index.

    • Interval/schedule and lock duration for the indexing can be set on SearchOptions. Defaults are 5 seconds (IndexingInterval) and 30 seconds (IndexingLockDuration).


  • Fixed an issue from alpha 7, where stripe and adyen definitions were no longer added correctly when migrating from an old database.

Alpha 8


  • The authentication changes in this alpha mean you need to update your project, see this gist for details.


Alpha 7


  • DefaultRoundingService now uses MidpointRounding.AwayFromZeroinstead of MidpointRounding.ToEven(C# standard). See Midpoint values and rounding conventions for further details

  • IRepository has been removed. Instead, use UcommerceDbContextto interact with EF Core directly


  • It is now possible to create, see, edit, and delete (CRUD) currencies from the backoffice, settings app, and currencies menu.

  • It is now possible to create, see, edit, and delete (CRUD) shipping methods from the backoffice, settings app, and shipping methods menu.

    • It is possible to edit the general properties of a shipping method as well as pricing and restrictions.

  • It is now possible to see and change the image on a payment method through the backoffice (requires custom IImageService).

  • It is now possible to update which pipeline a payment method uses after its creation.


  • Custom, non-multilingual definition field updates are now persistent again.

  • Category Search Models list of product IDs now reflects the IDs of the products and not the category product relations.

  • Categories and payment methods now get their display names set in all languages on creation.

  • Categories with "display on site" set to false are not indexed; they are not shown in the indexed products' category list.

  • It is now possible to create a category on the default store again.

  • Changed the name of the category field "Show Prices Including VAT" to "Show Prices Including Tax", and updating the field is now persistent again.

  • When generating promo codes, the amount field is now limited to 6000, just like the API, effectively avoiding a silent fail in the backoffice when going over this limit.

  • A custom definition field on a product definition now correctly defaults to the data type editor instead of an editor property, effectively meaning that the field now appears consistently in the backoffice.

  • Missing Tax Rate and incorrect net price calculated for products. (Thank you Gratsiela!)

  • Better error messages.

  • Better differentiated empty state messages depending on order status for order lines and discounts section.

  • Content Picker Editors: Dynamic rendering of related entity type names in translations, replacing the previous hardcoded “product” label in the sub-header.

  • The item name in the breadcrumbs navigation is truncated now if it's more than 42 characters.

Alpha 5

Main Features

  • The pricing section has been added to the payment method edit page.

  • It is now possible to delete a payment method and undo that deletion.

  • It is now possible to deep link to a product

  • It is now possible to edit the store, country and price group related restrictions on payment methods

Bug fixes

  • Clicking on a product variant now redirects you to it again.

  • Product criteria no longer throws an error when adding a product.

  • "Spend more than" criteria now handles too large numbers properly.

  • Account payment method no longer throws 500 after a fresh install.

  • Display name for categories, catalogs, products and payment methods, can no longer be empty.

  • Updating, adding or deleting an order line now live-updates the log book.

  • Validation errors of Product upon creation is now displayed properly.

  • Dropdown items are now easier to click.

  • Get payment methods method in transaction library now returns hydrated payment method.

  • Get payment methods endpoint in headless now respects price group restriction.

  • Default payment method Account now has the relevant information to function as intended.

  • Removing Display names completely is no longer possible on any Entity through back office.

Alpha 3

Main Features

  • All new Api Acces page for configuring headless properties like client id, client secret, and a list of URIs that should be whitelisted.

  • You can change the client secret for your stores in the UI, granting a much faster headless setup.

  • You can add URLs to your whitelist for headless through the ui, granting a much smoother experience than earlier alpha builds.

  • You can remove URLs from the URL whitelist.

Bug fixes

  • Adding specific discounts to a promotion no longer throws an error.

  • Adding a product to a product criteria no longer throws an error.

  • The country field in the orders app is now more responsive.

  • Create store modal now closes when clicking cancel.

  • Creating a category now normalizes the sort order as expected.

  • Moving a category to another category now sorts them correctly.

  • A negative quantity in AddToCart will decrease the amount on an order line or delete it if the value drops to 0 or below.

  • Variant products will now correctly show in the Backoffice that they inherit parent prices if no prices are set.

  • Store pickers are now reactive; new stores will appear immediately.

  • Deleted stores will immediately be removed from store pickers.

  • Undo button now disappears after deleting an entity.

  • Multiple requests are no longer sent when getting stores on high-resolution devices.

Alpha 2

Main Features

  • Payment Method Settings, the settings area of the backoffice now has a section for configuring your payment methods. It's possible to see payment methods, create new ones, and edit the properties for a payment method.

  • Support for acquiring payments with Stripe as provider.

  • Support for refunding payments with Stripe as provider.

  • Support for cancelling payments with Stripe as provider.

  • New template for an MVC project with Ucommerce with a single index page, scratch indexing and pages for categories, products, adding products as well as viewing and clearing a cart.

Bug fixes

  • It's now possible to change the SKU of a product in backoffice again.

  • Store domain dropdown in backoffice now supports different port numbers.

  • Store domain dropdown in backoffice is no longer triplicated.

  • Creating a cart now includes it's order lines.

  • Re-ordering catalogs and categories no longer throws a server error.

  • It's now possible to change order status from the backoffice again.

  • It's now possible to update the long description on a product in backoffice again.

Last updated