Release Notes

Ucommerce 10.5.0


Breaking Changes


  • Custom Definition-Based UI Editors: Added support for creating custom editors for the Ucommerce backoffice. Learn how to create your own editor.

  • Price Group Inheritance: When creating a new price group, selecting a base price group is now possible. Learn more about price group inheritance.

  • Price Group List UI Changes: The price group list view was redesigned.

    • The new design makes use of pages instead of infinite scroll, which could cause performance issues in some cases.


  • Now using the built-in System.Text.Json for (de-)serialization instead of Newtonsoft.Json

Bug Fixes

  • Resolved an issue where deleting a product relation could result in an error.


  • The data importer tool, introduced in version 10.3.0, has been updated to support price group inheritance. The import model now includes a new property for defining a base price group.

Ucommerce 10.4.0



Bug Fixes

  • Logbook Entry for Cart: Resolved an issue where adding a logbook entry for a cart was not possible.

  • Order Number Series: Order number series on the store is now a required field and will not fail due to undo actions.

  • UI Flickering: Fixed an issue causing the UI to flicker when changing values on a promotion.

  • Navigation Header: Addressed a problem where the left-side header navigation was unresponsive on the product page.

Ucommerce 10.3.0


Breaking changes

  • The connection string setting has been moved from Ucommerce:ConnectionStrings:UcommerceConnectionString to Ucommerce:Persistence:ConnectionString to consolidate all persistence options in one place.

    • Additionally, the Ucommerce:Persistence:ConnectionTimeout option is now properly utilized to set the maximum duration (in seconds) for a database query before it times out. This improvement is particularly beneficial when migrating large databases from version 9.7 to 10.


  • Prices Bulk Editing: The "Price Groups" section in settings has been renamed to "Prices". This area still includes price groups and price group editing, but now also allows for bulk editing of prices within each price group. This change aims to simplify the use of price groups and streamline the mass editing of prices.

  • Introducing the new data importer tool! This tool allows you to seamlessly import products, prices, and more into Ucommerce from external sources. For more details, see Data Import.

    Note: This is the initial release of the tool. Future updates and improvements are planned.

Bug Fixes

  • Order Page Optimization: Fixed an issue causing the orders page to timeout when too many orders were loaded. The fetching process has been optimized for speed, and the timeout limit has been increased.

  • Error Message Display: Error messages now correctly appear in the back office when an error occurs during the creation of a price group.

  • Pipeline Task Exception Handling: An exception is now thrown if you attempt to add a pipeline task before or after itself, unless the instances have different IDs. Previously, this operation was allowed but produced unexpected results.

  • Database Migration Debugging: During database migrations, the inner exception is now surfaced, making debugging easier.

  • Product Page Price Groups: Fixed an issue where the product page would only load a maximum of 12 price groups. Note: We are aware of another potential issue affecting this area and will address it in the next release.

  • Free Gift Reward Editor: The loading indicator in the Free Gift reward editor no longer displays indefinitely.

  • Promo Code Download: It is now possible to download a list of promo codes again.

  • Cart default data: The default carts had invalid data, causing errors. This has been adjusted.

Ucommerce 10.2.1


Bug Fixes

  • (Migrations) Added safeguards to migration logic that could break migrations in rare cases.

Ucommerce 10.2.0


Breaking changes

  • (Pipelines) Pipelines have been improved. If you have any custom pipeline tasks or are executing any pipelines, you will need to change your code.

    • IsSuccessful has been deprecated. It is replaced by EnsureSuccess. We believe that the new name better reflects the fact that a PipelineException is thrown if any errors occur during the execution of the pipeline. Also, in case EnsureSuccess does not throw a PipelineException, it returns the output from the pipeline execution.

    • PipelineTaskArgs has been removed. PipelineContext now contains the input and output instead. The PipelineContext has been made generic to support this change. In addition, the CancellationToken has been moved out of the PipelineContext and is now a part of the Execute method signature to make your IDE recognize its existence. Method signature before:

      Task Execute(PipelineTaskArgs<TInput, TOutput> context, PipelineContext context);

      Method signature now:

      Task Execute(PipelineContext<TInput, TOutput> context, CancellationToken cancellationToken);
    • Executing a pipeline no longer requires an output or PipelineTaskArgs object. To run a pipeline, you only need to provide the input. When the pipeline has executed, we recommend calling EnsureSuccess on the PipelineExecutionResponse, to make sure no errors occured and get the output from the pipeline.


Bug Fixes

  • (Indexing) The product indexer now works correctly when indexing products outside of categories.

  • (Pipelines) The checkout and order processing pipelines are now discoverable in the pipeline discoverability endpoint. Learn more about pipelines and discoverability.

Ucommerce 10.1.2


Bug Fixes

  • (Licensing) The application will no longer shut down end of June even if a valid license key is given

Ucommerce 10.1.1



  • (Migration) Migration script execution speed and reliability is improved

Bug Fixes

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

  • (Backoffice) Lazy loading fixed in the 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


  • 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 BackOffice Authentication 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 Checkout Pipelines documentation for details.

  • It is now possible to add and edit order processing pipelines through the PaymentBuilder.OrderProcessingPipelines property. See Order processing Pipelines 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 take a look at the Configuration documentation for more 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