Breaking changes for Commerce Connect 14
Commerce Admin user interface replaces Commerce Manager
The Commerce Administration view is an administrative application replacing the legacy Commerce Manager administration backend system. The new user interface provides a unified and improved user experience.
The Admin view provides support for working with markets, warehouses, catalog indexing, tax configuration, shipping, and payments.
Due to the removal of Commerce Manager, the following tasks are now managed through the API:
The Mediachase.BusinessFoundation assembly was also removed as it was mainly used to support Commerce Manager.
Configurations
Support for the various configuration files in the Configs project folder was removed. The functionality was replaced with the use of Options classes, where you can configure settings in the appSettings file or use the ConfigureServices of the Startup class to override default values for Options. This provides a unified way of configuration methods in ASP.NET Core. See Option configuration classes.
Membership Provider not supported
The support for ASP.NET Membership Provider was removed. Only ASP.NET Identity Provider is supported for Optimizely Commerce Connect. See Security and Migrating from SQL membership to ASP.NET identity.
Payments
Mediachase.Commerce.Plugins.Payment was removed because it does not support AuthorizeNet. The library is no longer supported in ASP.NET Core.
Support for payment providers PayPal, DIBS, Datacash, and gift card was removed. The CreatedCardPayment class was marked as obsolete and will be removed later. It is strongly recommended that you adopt a PCI-compliant solution for managing payments in your project.
Solr search providers not supported
Support for Mediachase.Search.Solr35SearchProvider and Mediachase.Search.SolrSearchProvider packages has been removed. As a replacement, you can use the LuceneSearchProvider or FindSearchProvider. There is in-built support for FindSearchProvider in the Optimizely DXP cloud service environments. See Search.
OleDb import parser removed
The Mediachase.MetaDataPlus.Import.Parser.OleDbIncomingDataParser has been removed, and parsing of files using OleDb connection is not supported. CSV and XML data parsers are still supported.
UserTimeZone not supported
The UserTimeZone functionality was removed from Mediachase.BusinessFoundation.Data to avoid dependency on Windows OS.
Webservice support for catalog system removed
You can no longer access the Catalog subsystem through web service calls.
Synchronous execution of events
The following changes were done:
- ReportingOrderEventListener executes the listeners synchronously.
- On MetaDataChanged events, the synchronization with the content type model repository is done synchronously.
Binary serialization not supported for ASP.NET Core types
Some ASP.NET Core built-in types are no longer binary serializable. NumberFormatInfo is one example. Since serializable Commerce Connect types like Money and Currency use NumberFormatInfo, these also become unserializable. This is considered a breaking change for solutions that rely on binary serialization of these types, meaning that probably SerializationExceptions is thrown.
Promotion engine unit-level exclusions
Starting with EPiServer.Commerce 14.47.0, the promotion engine applies promotion exclusions differently when PromotionEngineSettings.ExclusionLevel is set to ExclusionLevel.Unit. Order totals may change for sites with unit-level exclusions. Review your promotions and custom promotion code before you upgrade. See Promotion exclusions.
The following behavior changes apply:
- Exclusions are applied the same way regardless of which promotion carries the exclusion. An exclusion means two promotions must not apply to the same unit, regardless of the direction in which it is configured. One-way exclusions now apply the excluded promotion to the units left by the excluding promotion. Previously, the excluded promotion was not applied to those units. Two-way exclusions are not affected.
- An entry-level promotion that conflicts with an applied order-level or shipping-level promotion is excluded in full, regardless of the exclusion direction. An order or shipping promotion discounts the order or shipment as a whole and has no units to share. Previously, the entry-level promotion was applied anyway.
- A promotion consumes the units that fulfill its condition, not just the units it reprices. For example, a buy three, get ten percent off one promotion on a line item with ten units leaves seven units for excluded promotions, rather than nine.
- Buy quantity get free items, cheapest free, and most expensive free promotions no longer use units consumed by an excluding promotion to fulfill its condition, or units targeted by an excluding spend amount promotion. Custom processors derived from GetFreeItemsProcessorBase receive only the codes with units remaining in GetAffectedEntries, and are asked for fewer batches when fewer units remain.
- Every entry-level promotion returns the same result when the promotions that exclude it leave it no units: a fulfilled reward with a single redemption and the FulfillmentStatus.Excluded status. Previously, BuyOneGetOneDiscount returned a reward with that status and no redemption. RewardApplicatorBase<TAffectedObject> no longer marks an excluded redemption of a gift reward as fulfilled. When called directly for a promotion excluded at the order level, free item processors now return a reward with the FulfillmentStatus.Excluded status instead of an empty fulfilled reward.
- OrderFormPriceMatrix.IsDoubleExclusion is obsolete because the exclusion direction no longer selects between two algorithms. Use OrderFormPriceMatrix.IsExcluded instead, which treats one-way and two-way exclusions alike.
Removed APIs
- Mediachase.Commerce.Engine.Template and Mediachase.Commerce.Engine.Image have been removed.
- Since HttpModules are not supported in .NET core. EPiServer.Business.Commerce.HttpModules.ProfileModule has been removed.
- The upgrading migration steps MigrateAdminsRoleStep, PopulateUserPermissionStep, and UpdateContactUserIdStep were removed, and you should upgrade your solution to Commerce version 13 before upgrading to version 14.
SetupPaymentService removal
The SetupPaymentService extension method on IApplicationBuilder has been removed in Commerce Connect 14.48.0. Payment Service provisioning no longer calls it.
Remove the call from your startup code. No replacement is needed. Service registration through AddPaymentService is unchanged.
// Before (versions earlier than Commerce Connect 14.48.0)
app.SetupPaymentService();
// After (Commerce Connect 14.48.0)
// Delete the call. AddPaymentService in ConfigureServices stays as it is.See Configure Payment Service for the current setup.
Upgrading support
To make upgrading easier, there is an upgrading tool available. See the Upgrade assistant article.