Release Notes

Jan 2020 – released Sitecore Experience Commerce 9.3 Initial Release

Sitecore Commerce 9.3 focuses on increased solution performance and ability to scale, along with functional enhancements and corrective content.

New features/improvements

Area Description TFS no.
Scalability - Indexing Added a new Commerce based index that replaces the Sitecore Master and Web indexing of Commerce managed items. Significantly reduces the time to index Commerce items, due in part to reducing communications between Sitecore and the Engine.
Azure Search with on-prem -- As a result of this feature, on-prem deployments using SIF no longer support automatic configuration of Azure Search. This needs to configured separately after installation if you wish to use Azure Search with an on-prem deployment. Cloud deployments have not changed.
Content Editor Indexing Functionality -- Indexing for catalog items can still be done from the Indexing Manager in XP, but  you can also index catalog items using Postman. Indexing from Postman does not add/remove content items in the index, it's only for catalog items.  New Postman samples have been provided in the SDK.
Link to documentation for incremental index update
350723
Scalability - response time Replaced the cache in CE Connect with the centralize Redis cache. This resolved the presence of intermittent spikes in response times when testing of large distributed deployments under relatively high loads.
Link to documentation on commerce engine connect caching
360554
Scalability - page view rate Reduced the depth of pipeline calls, and the allocation of tasks. Avoided calling commands that only calls a pipeline; called the pipeline directly instead. Avoided calling pipelines within blocks, when the pipeline can be added as a block of the main pipeline. Avoided the use of Task.Run. Used ConfigureAwait(false) in async methods. Removed non-value blocks from pipelines, e.g. those that return same object without modifications.
349201, 351012, 351018, 339399
Scalability - checkout rate Combined the price and stock API call from the Storefront to the Commerce Engine using method GetSelleableItemSummary, to improve performance.
343121, 342890
Scalability - promotions Added search to the Business Tools for promotions, which required adding promotions to the Commerce index. This reduces the time to retrieve promotions in the Business Tools by avoiding needing to load all promotions from the list. Translated most of the filtering blocks in the IDiscoverPromotionsPipeline into search filter criteria in the search. Added a new Promotions index accordingly.
Link to documentation on commerce search and indexing
359226
Scalability - price cards Added search to the Business Tools for price cards, which required adding price cards to the Commerce index. This reduces the time to retrieve price cards in the Business Tools by avoiding needing to load all price cards from the list.
Link to documentation on how to work with price books
Link to documentation on commerce search and indexing
359225
Engine Indexing Added the ability to implement the index SwitchOnRebuild feature to enable Solr or Azure searching operations to continue while an index rebuild is in progress.
Link to documentation on switching indexes during rebuild
293569, 351671
Sellable item associations Added the ability to change a parent association from the sellable item, instead of needing to create the association from the new parent (where finding the sellable item could be cumbersome).
Link to documentation on working with a sellable item
276437
Business Tools Usability Added paging to the display of lists of promotions, coupons, inventory sets, orders.
287030, 286796, 287029
Engine Indexing Added the ability to implement the index SwitchOnRebuild feature to enable Solr or Azure searching operations to continue while an index rebuild is in progress.
Link to documentation on switching indexes during rebuild
293569,351671
Sellable item associations Added the ability to change a parent association from the sellable item, instead of needing to create the association from the new parent (where finding the sellable item could be cumbersome).
Link to documentation on working with a sellable item
276437
Business Tools Usability Added paging to the display of lists of promotions, coupons, inventory sets, orders.
287030,286796,287029
Business Tools Usability Improved the display of sections on a Sellable Item page; improved the order of sections to focus on the important sections at the top, and the details lower down on the page.
279422
Promotions Added the ability to extend the end date of active promotions.
Link to documentation on working with promotions
288457
Promotions Category Level Promotions. Added the ability to create a promotion that applies to all products in a category using new qualification condition Item is in [specific] Category along with two new benefits, Get Cart Item in Category Percent Off and Get Cart Item in Category Amount Off.
Link to documentation on promotions qualifications
271231
Promotions Added the ability to search for promotions in the Business Tools, so that it is easier to find the relevant promotion books and promotions when there are a large number configured.
Link to documentation on working with promotions
361125
Price Cards Added the ability to search for price cards in the Business Toos, so that it is easier to find the relevant price books and price cards when there are a large number configured.
Link to documentation on working with inventory
278380
Inventory Improved navigation to the inventory set page, for a product variant.
324042
Inventory Added the ability to search for sellable items in the Inventory Manager user interface, so it is easier to find the sellable items associated with inventory sets.
Link to documentation on working with inventory
276428
Inventory Added the ability to remove inventory sets using the Inventory Manager user interface.
Link to documentation on working with inventory
350402
Connect Added the ability to configure product recommendations emails, triggered from Marketing Automation campaigns that are based on shoppers' purchases.
Link to documentation on working with commerce marketing automation campaigns
348829, 348760
Connect Added the ability to configure product recommendations emails, triggered from the List Manager with recommendations based on customer purchase history.
Link to documentation on working with commerce marketing automation campaigns
364370, 364468, 348760
Connect Added the ability to configure product recommendations emails, triggered from the List Manager based on arbitrary segmentation and with the ability to include arbitrary products based on queries.
Link to documentation on working with commerce marketing automation campaigns
364370, 364966, 348760
Connect Added the ability to query on relevant commerce models and properties, for example query on orders placed, page event triggered including abandoned cart page event.
Link to documentation on searching contacts and commerce interactions in the xdb index
228195
Connect Updated xProfile reports to work with Abandoned Carts and orders based on change in Marketing Automation campaign and page events triggered.
348820
Connect Added support for anonymous customers in commerce Marketing Automation campaigns, allowing order confirmations and abandoned cart notifications to be sent to customers concluding or attempting an anonymous checkout.
Link to documentation on multiple enrollments and anonymous contacts in commerce marketing automation campaigns
347460, 335975
Connect Added support for re-entry into the New Order Placed campaign allowing customers to be in the campaign multiple  times  concurrently.
334348
Connect Added new commerce-specific calculated facet CommerceInteractionsCache for use with segmentation rules and live site personalization.
Link to documentation on creating a segmented list of customers who purchased a specific product
353812
Connect Added a segmentation rule targeting customers who purchased a given product.
Link to documentation on creating a segmented list of customers who purchased a specific product
334267
Connect IContactCommerceInteractionProvider and ContactCommerceInteractionProvider provider
Link on documentation on commerce segmentation predicates
N/A
Storefront Added a generic Commerce Search Results component that can list product cards with price and stock info based on dynamic queries. This is the first Sitecore Experience Accelerator (SXA) component built and released using a Scriban template.
Link to documentation on choosing between available renderings for product lists
Link to documentation on commerce search results rendering
Link to documentation on customizing the commerce search results rendering
348686,353257
Storefront Updated the Storefront site template to use the Commerce Search Result component for promoted products on Home page.
Link to documentation on commerce home page
Link to documentation on rendering a product list online
Link to documentation on modify default storefront site template pages to use the product list and promoted product renderings
358154
Storefront Updated the Storefront site template to use the Commerce Search Result component for products on the Category page.
Link to documentation on commerce catalog category page
281379
Storefront Updated the Storefront site template to use the Commerce Search Result component for related products on the Product Detail page.
Link to documentation on commerce product detail page
363282
Storefront Updated the Storefront site template to use the Commerce Search Result component for products on the search results page.
Link to documentation on commerce search results page
303827
Storefront Updated the Storefront site template to use the Sitecore Experience Accelerator (SXA) Search Box component for global searching and providing type-ahead and predictive suggestions.
Link to documentation on commerce search results page
303827
Storefront Updated the Storefront site template to use the new Sitecore Experience Accelerator (SXA) Aggregated Facet component for easy facet configuration. This allows facets to be hidden when no values are present, and it allows multi-facet selection leading to improved usability.
Link to documentation on use and configure a facet for the storefront search
Link to documentation on choosing between available renderings
311970, 303838
Storefront Updated the Storefront site template to use the new Sitecore Experience Accelerator (SXA) Facet Summary component allowing end-customers to de-select facets easily, and to have a quick overview of selected facets.
Link to documentation on commerce catalog category page
359629
Storefront Updated the Storefront site template to use the Sitecore Experience Accelerator (SXA) Search Box on Category pages to allow local filtering and searching amongst products in the category, leading to improved usability.
Link to documentation on commerce catalog category page
362962
Storefront Added a new Email Experience Manager (EXM) mail template for recommended products that can be used for both automated campaigns triggered from Market Automation, or with regular campaigns.
Link to documentation on creating a regular email campaign for recommended products
365337, 365408, 348827
Storefront Improved the ability and flexibility for developers/editors to create their own search queries, by adding additional Commerce search tokens to the default Sitecore Experience Accelerator (SXA) search functionality.
The new search token ProductRelationship includes products associated with the current product in a specified relationship, which is used on the Product Detail page to render lists of related products.
Link to documentation on commerce search scopes
363282
Storefront Improved the ability and flexibility for developers/editors to create their own search queries, by adding additional Commerce search tokens to the default Sitecore Experience Accelerator (SXA) search functionality.
The new search token ItemsWithTheSameValueInParentChildFields is used when navigating categories in a hierarchical structure. It only includes immediate children; it excludes sub-categories and products.
Link to documentation on commerce search scopes
348356
Storefront Added personalization based on inventory (inventory provider implementation).
Link to documentation on personalizing a storefront page based on inventory
281116
Storefront Improved Analytics by adding the ability to assign content profile cards to catalog items, and having them applied to customers. This applies when navigating using wildcards; this does not apply when using Direct Navigation that was added in XC9.1.
Link to documentation on navigation methods
299462

 

Resolved issues

Area Description TFS no.
Engine Indexing Improved the performance of indexing performance via a new Commerce-based index that replaces the current Sitecore Master and Web indexing, for Commerce items.
307147
Engine Indexing Resolved an issue where rebuilding the index failed where the SellableItem was associated to more than one Catalog and one of the Catalogs was not selected in Sitecore Content Editor.
347458
Performance Improved performance of the PopulateCartLineItemsBlock by using multithreading instead of using a time-consuming foreach loop.
326211
Engine authentication Resolved an issue were Sitecore could not connect to the Commerce Engine when the certificate thumbprint was in lowercase. This was resolved by making the checking criteria case insensitive.
342268
Engine Resolved a Transaction Exception that was thrown when SqlCommand objects are not correctly disposed of if the corresponding SqlConnection is reused.
351686
Engine Resolved an issue where an InvalidShop error appears…"Shop 'CommerceEngineDefaultStorefront' does not exist." when syncing Control Panel items with the Engine, for example after stopping and restarting the Content Management role and the Commerce Engine.
358019
Engine Resolved an issue with Minions that run for long periods of time, where a concurrency errors appeared in the Engine logs.
336882
Engine Updated the default WakeupInterval value of the PurgeCartsMinion to be set to 24 hours (01.00:00:00). It had been incorrectly set to 24 days (24:00:00) and was incorrect in documentation.
360544
Engine Resolved an issue where the SqlDataReader remained open within Sitecore.Commerce.Plugin.SQL.GetListEntitiesCommand.
354104
Catalog mappings Resolved an issue where in-memory mappings collection, CatalogRepository.MappingEntries, gets emptied if there is a failure in reloading mappings. Now if the mappings does not get loaded properly, e.g. due to network failure or timeout, then it continues using previously loaded in-memory mappings.
347551
Catalog associations Resolved a limitation in dissociating a category from another category causes the category to be incorrectly removed from the display in the Sitecore Content Editor, because the ParentCatalogList was removed.
336979
Catalog associations Fixed an issue where disassociating a category from a parent then associating it to a new parent would not correctly update the full path in the index.
347998
Catalog associations Resolved an issue where dissociating at SellableItem from a category does not fully process the disassociation, causing an issue when the next incremental indexing is run. This issue occurred when the sellableItem had been associated with multiple categories across more than one catalog.
352513
Pricing Fixed an issue where the price card snapshot applied to a product variant was not correctly removed after having disabled that variant.
358297
Import/Export Resolved a limitation where a catalog exported from an Environment, which had an associated Storefront, could not be imported to a different Environment that did not have that same Storefront associated with it.
342372
Business Tools Fixed page navigation issue involving with loading wrong version when there are multiple Entity Versions configured. Opening a SellableItem after navigating to different pages now loads the latest version as expected, instead of loading version 1.
336647
Business Tools Improved the navigation to view the inventory of a sellable item. Selecting the Inventory Set for a product variant now navigates to the inventory page where the product variant is located as expected, instead of navigating to the first page of the inventory set.
324042
Business Tools Resolved an issue with Entity Versions, where the user would enter a value in the Weight field of a SellableItem entity version but the value of 0 would get saved instead.
339274
Business Tools Resolved a navigation issue where the business user working with an active order in the Orders tool intended to navigate to the customer entity view page was directed to the Business Tools home page.
348783
Storefront Resolved an issue in processing price cards on product variants, where the list price was not correctly adjusted to the valid snapshot price.
350852
Storefront Resolved an issue in the Sitecore Control Panel where the field for configuring the Commerce Environment that the Storefront is associated with was missing. The Environment field and its value were not displaying correctly, for example in Commerce Control Panel > Storefront Settings > Storefronts.
356514
Storefront Resolved error… "Error: The email address does not exist." message that was displayed on the Storefront after trying to reset the password via the Forgot Password functionality.
276356
Storefront Resolved an issue where the Minicart incorrectly displayed the cart content without the discounted price on the cart line subtotal, and without promotional messages.
359147
Connect Resolved an exception thrown where processors of the convertToXConnectEvent pipeline do not respect page events without custom values. An exception was thrown for the first encountered Commerce event, and the remainder of events did not get triggered.
331669
Connect Resolved an "Object reference not set to an instance of an object." exception that was thrown when on initializing the PreviousStateName value was not initialized and could not be read.
310923
Connect - personalization Resolved limitations preventing setting up inventory personalization rules, in Connect.
281116
Connect - personalization Resolved an issue where the Checkout button was not displayed on the Storefront after creating a personalization rule involving setting a Specific Product Quantity Condition.
326232
Connect - personalization Resolved an issue where the Checkout button was not displayed on the Storefront after creating a personalization rule involving setting a Total Product Quantity Condition.
251521
Connect - analytics Resolved an issue where analytics data was missing because the Sitecore.Commerce.Pipelines.Orders.TriggerOrderOutcome processor was disabled by default.
329511
Connect - analytics Resolved a System.Collections.Generic.KeyNotFound exception after attempting to register a new search page event for viewing in an Experience Analytics report.
324455
Deployment Updated the collations pertaining to Global and SharedEnvironments databases, to align the collations set for on-premise and Azure deployments, because previously they were different for each deployment option.
350147
Deployment Resolved a deploy issue where bootstrapping was occurring on the Commerce Shops instance, instead of the intended Commerce Ops instance.
346742

 

Breaking changes

Area Description
Obsoleted in XC9.3 Items in this section have been marked obsolete in XC9.3, and are targeted to be removed in XC9.4.

Commerce Core:
- Sitecore.Commerce.Core.MinionBossPolicy(string, string, TimeSpan?) - Use ctor with List listsToWatch parameter instead.
- Sitecore.Commerce.Core.MinionPolicy(string, string, TimeSpan?) - Use ctor with List listsToWatch parameter instead.
- Sitecore.Commerce.Core.MinionPolicy(string, string, List, TimeSpan?, int?, int?) - Use ctor with List listsToWatch parameter instead.
- Sitecore.Commerce.Core.MinionPolicy.ListToWatch - Use MinionPolicy.ListsToWatch instead.

Catalog plugin:
- Sitecore.Commerce.Plugin.Catalog.CatalogItems
- Sitecore.Commerce.Plugin.Catalog.GetMappingsForIdFromDbCommand.Process(CommerceContext commerceContext, string environmentName, string sitecoreId) - Use Process(CommerceContext commerceContext, string deterministicId) instead.
- Sitecore.Commerce.Plugin.Catalog.BaseFormatComposerViewPropertyBlock.FormatSellableItem(SellableItem item, CommercePipelineExecutionContext context) - Use FormatCatalogItemComposerViews(CatalogItemBase item, CommercePipelineExecutionContext context) instead
- Sitecore.Commerce.Plugin.Catalog.GetSellableItemsCommand - Consider using the Sitecore.Commerce.Core.IFindEntitiesInListPipeline to load a list of sellable items.
- Sitecore.Commerce.Plugin.Catalog.GetSellableItemsArgument() - Use GetSellableItemsArgument(IList) instead.

Inventory plugin:
- Sitecore.Commerce.Plugin.Inventory.GetInventoryCatalogPipeline
- Sitecore.Commerce.Plugin.Inventory.GetInventorySkuPipeline
- Sitecore.Commerce.Plugin.Inventory.GetInventoryItem
- Sitecore.Commerce.Plugin.Inventory.GetInventoryInformationPipeline
- Sitecore.Commerce.Plugin.Inventory.PopulateInventoryItemBlock
- Sitecore.Commerce.Plugin.Inventory.LoadItemInventoryItemsBlock
- Sitecore.Commerce.Plugin.Inventory.PopulateLineItemsInventoryBlock
- Sitecore.Commerce.Plugin.Inventory.LoadInventoryItemBlock
- Sitecore.Commerce.Plugin.Inventory.GetCartLinesInventory
- Sitecore.Commerce.Plugin.Inventory.PopulateInventoryItemAllocationBlock
- Sitecore.Commerce.Plugin.Inventory.GetEditInventoryInformationViewBlock

Other plugins:
- Sitecore.Commerce.Plugin.Coupons.PersistCouponBlock - Use PrepArgumentToPersistEntityBlock, IPersistEntityPipeline and PostPersistEntityBlock.
- Sitecore.Commerce.Plugin.Coupons.PersistPrivateCouponGroupBlock - Use PrepArgumentToPersistEntityBlock, IPersistEntityPipeline and PostPersistEntityBlock.
- Sitecore.Commerce.Plugin.Orders.PersistOrderBlock - Use PrepArgumentToPersistEntityBlock, IPersistEntityPipeline and PostPersistEntityBlock.
- Sitecore.Commerce.Plugin.Carts.PersistCartBlock - Use PrepArgumentToPersistEntityBlock, IPersistEntityPipeline and PostPersistEntityBlock.
- Sitecore.Commerce.Plugin.Search.Solr.SolrContextCommand.DeleteDocuments(string name, CommerceContext context) - Use DeleteDocuments(string, string, CommerceContext) instead.
- Sitecore.Commerce.Plugin.Search.SearchScopePolicy(string, string, bool, bool, bool, string, string, string, string, string, List) - Use ctor with List fullListNames parameter instead.
- Sitecore.Commerce.Plugin.Search.SearchScopePolicy.FullListName - Use SearchScopePolicy.FullListNames instead.
- Sitecore.Commerce.EntityViews.GetListViewBlock - Method GetEntities is obsolete. Use GetEntities instead.

Commerce Engine Connect Search - these items are no longer used because indexing of catalog items is now performed by the Commerce Engine:
- Sitecore.Commerce.Engine.Connect.Search.ComputedFields.CatalogEntityIdField
- Sitecore.Commerce.Engine.Connect.Search.ComputedFields.CommerceAncestorIdsField
- Sitecore.Commerce.Engine.Connect.Search.ComputedFields.CommerceHasChildrenField
- Sitecore.Commerce.Engine.Connect.Search.ComputedFields.CommerceSearchItemTypeField
- Sitecore.Commerce.Engine.Connect.Search.ComputedFields.ExcludeFromWebsiteSearchResultsField
- Sitecore.Commerce.Engine.Connect.Search.Crawlers.AllCatalogItemsCrawler
- Sitecore.Commerce.Engine.Connect.Search.Strategies.CatalogsIntervalAsynchronousStrategy
- Sitecore.Commerce.Engine.Connect.Search.Strategies.CatalogSystemIntervalAsynchronousStrategyBase
- Sitecore.Commerce.Engine.Connect.Search.Strategies.CategoriesIntervalAsynchronousStrategy
- Sitecore.Commerce.Engine.Connect.Search.Strategies.SellableItemsIntervalAsynchronousStrategy
- Sitecore.Commerce.Engine.Connect.Search.IndexUtility
- Sitecore.Commerce.Engine.Connect.Search.Strategies.CommerceIntervalAsynchronousStrategy - Property: ItemsToTake. The batch size can now be specified through a minion policy.

Commerce Engine Connect Data Provider:
- Sitecore.Commerce.Engine.Connect.DataProvider.CatalogRepository.MappingEntries - Use MappingsByDeterministicId instead.
- Sitecore.Commerce.Engine.Connect.DataProvider.CatalogRepository.Bundles - Use MappingsByDeterministicId instead.
- Sitecore.Commerce.Engine.Connect.DataProvider.CatalogRepository.MappingEntriesLastUpdatedUtc - Use CheckMappings() instead.
- Sitecore.Commerce.Engine.Connect.DataProvider.CatalogRepository.UpdateMappingEntries - Use CheckMappings() instead.
- Sitecore.Commerce.Engine.Connect.DataProvider.CatalogRepository.GetCatalogName - Use GetCatalogMappingEntry(ID deterministicId) instead.
- Sitecore.Commerce.Engine.Connect.DataProvider.CatalogRepository.GetCatalogEntity - Use GetCatalogEntity(MappingEntry childEntry, int? version = null) instead.
- Sitecore.Commerce.Engine.Connect.DataProvider.CatalogRepository.SetParentId - Use GetMappingEntry(string Id) instead.
- Sitecore.Commerce.Engine.Connect.DataProvider.CatalogRepository.GetSitecoreIdForDeterministicId(string deterministicId) - Use GetMappingEntry(string Id) instead.
- Sitecore.Commerce.Engine.Connect.DataProvider.CatalogRepository.GetPathIdsForSitecoreId(string sitecoreId, bool includeVariations = true) - Use GetDeterministicIdsForSitecoreId(string sitecoreId, bool includeVariations = true) instead.
- Sitecore.Commerce.Engine.Connect.DataProvider.CatalogRepository.GetPathIdsForSitecoreId(string sitecoreId, string parentId) - Use GetDeterministicIdForParentId(string sitecoreId, string parentId) instead.
- Sitecore.Commerce.Engine.Connect.DataProvider.CatalogRepository.GetCatalogItemDeterministicIds - Use GetMappingEntry(string Id) instead.
- Sitecore.Commerce.Engine.Connect.DataProvider.CatalogRepository.GetSitecoreIdFromMappings- Use GetMappingEntry(string Id) instead.
- Sitecore.Commerce.Engine.Connect.DataProvider.CatalogRepository.GetEntityIdFromMappings - Use GetMappingEntry(string Id) instead.
- Sitecore.Commerce.Engine.Connect.DataProvider.CatalogRepository.GetItemDefinition- Use GetItemDefinition(Database database, MappingEntry mappingEntry, string catalogName, bool isVariant = false) instead.
- Sitecore.Commerce.Engine.Connect.DataProvider.CatalogRepository.GetListItemEntities - Use GetListItems(string listName, string typeName, int take) instead.
- Sitecore.Commerce.Engine.Connect.DataProvider.CatalogRepository.GetListItemSitecoreIds - Use GetListItems(string listName, string typeName, int take) instead.
- Sitecore.Commerce.Engine.Connect.DataProvider.CatalogRepository.GetListItems(string sitecoreId, string listName, string typeName, int take) - Use GetListItems(string listName, string typeName, int take) instead.
- Sitecore.Commerce.Engine.Connect.DataProvider.CatalogRepository.DoUxAction - This operation is not allowed.

Commerce Engine Connect pipelines:
- Sitecore.Commerce.Engine.Connect.Pipelines.Carts.AddCartLine - Method AddCartLine is obsolete. Use AddLineItemToCart instead.
- Sitecore.Commerce.Engine.Connect.Pipelines.Carts.UpdateCartLine - Use UpdateLineItem.
- Sitecore.Commerce.Engine.Connect.Pipelines.Carts.RemoveCartLine - Use RemoveLineItemFromCart.
Removed in XC9.3 Items in this section have been removed in XC9.3.

Removed Properties:
- Sitecore.Commerce.Engine.Connect.CommerceEngineConfiguration.CacheMemoryLimitMegabytes {get; set;}
- Sitecore.Commerce.Engine.Connect.CommerceEngineConfiguration.PhysicalMemoryLimitPercentage {get; set;}
- Sitecore.Commerce.Engine.Connect.CommerceEngineConfiguration.CacheMemoryScaleFactor {get; set;}
- Sitecore.Commerce.Engine.Connect.CommerceEngineConfiguration.PollingInterval {get; set;}
- Sitecore.Commerce.Engine.Connect.CommerceEngineConfiguration.CacheExpiryInSeconds {get; set;}
- Sitecore.Commerce.Engine.Connect.DataProvider.CatalogRepository.DefaultCache {get; }
Note: the Types that used these properties have also been removed.

Removed Types:
- Sitecore.Commerce.Plugin.Inventory.GetInventoryInformationBlock, Sitecore.Commerce.Plugin.Inventory.dll
- Sitecore.Commerce.Plugin.Inventory.ImportInventoryInformationBlock, Sitecore.Commerce.Plugin.Inventory.dll
- Sitecore.Commerce.Plugin.Inventory.ImportInventoryRelationshipsBlock, Sitecore.Commerce.Plugin.Inventory.dll
- Sitecore.Commerce.Plugin.Inventory.ImportInventorySetsBlock, Sitecore.Commerce.Plugin.Inventory.dll
- Sitecore.Commerce.Plugin.Inventory.ResolveSellableItemInventoryInformationBlock, Sitecore.Commerce.Plugin.Inventory.dll
- Sitecore.Commerce.Plugin.Inventory.StreamInventoryInformationToArchiveBlock, Sitecore.Commerce.Plugin.Inventory.dll
- Sitecore.Commerce.Plugin.Inventory.StreamInventoryItemsToArchiveBaseBlock`3, Sitecore.Commerce.Plugin.Inventory.dll
- Sitecore.Commerce.Plugin.Inventory.StreamInventorySetsToArchiveBlock, Sitecore.Commerce.Plugin.Inventory.dll
- Sitecore.Commerce.Plugin.Inventory.GetInventoryInformationPipeline, Sitecore.Commerce.Plugin.Inventory.dll
- Sitecore.Commerce.Plugin.Inventory.IGetInventoryInformationPipeline, Sitecore.Commerce.Plugin.Inventory.dll
- Sitecore.Commerce.Plugin.Inventory.InventoryItemCachePolicy, Sitecore.Commerce.Plugin.Inventory.dll
- Sitecore.Commerce.Plugin.Orders.ISettleSalesActivityPipeline, Sitecore.Commerce.Plugin.Orders.dll
- Sitecore.Commerce.Plugin.Orders.SettleSalesActivityPipeline, Sitecore.Commerce.Plugin.Orders.dll
- Sitecore.Commerce.Plugin.Orders.SettleSalesActivitiesMinion, Sitecore.Commerce.Plugin.Orders.dll
- Sitecore.Commerce.Plugin.Payments.GetClientTokenBlock, Sitecore.Commerce.Plugin.Payments.dll
- Sitecore.Commerce.Plugin.Payments.RefundCreditCardPaymentBlock, Sitecore.Commerce.Plugin.Payments.dll
- Sitecore.Commerce.Plugin.Payments.KnownViewsPolicy, Sitecore.Commerce.Plugin.Payments.dll
- Sitecore.Commerce.Plugin.Customers.GetCustomersDashboardViewBlock, Sitecore.Commerce.Plugin.Customers.dll
- Sitecore.Commerce.Engine.Connect.DataProvider.Caching.CommerceCache - Use Sitecore.Commerce.Engine.Connect.CachingRepository instead.
- Sitecore.Commerce.Engine.Connect.DataProvider.Caching.CommerceMemoryCache - Use Sitecore.Commerce.Engine.Connect.CachingRepository instead.

Removed Fields:
- StreamInventorySetsToArchive in type Sitecore.Commerce.Plugin.Inventory.InventoryConstants, Sitecore.Commerce.Plugin.Inventory.dll
- StreamInventoryInformationToArchive in type Sitecore.Commerce.Plugin.Inventory.InventoryConstants, Sitecore.Commerce.Plugin.Inventory.dll
- StreamBulkInventoryInformationToArchive in type Sitecore.Commerce.Plugin.Inventory.InventoryConstants, Sitecore.Commerce.Plugin.Inventory.dll
- ImportInventorySets in type Sitecore.Commerce.Plugin.Inventory.InventoryConstants, Sitecore.Commerce.Plugin.Inventory.dll
- ImportInventoryInformation in type Sitecore.Commerce.Plugin.Inventory.InventoryConstants, Sitecore.Commerce.Plugin.Inventory.dll
- GetInventoryInformationBlock in type Sitecore.Commerce.Plugin.Inventory.InventoryConstants, Sitecore.Commerce.Plugin.Inventory.dll
- ResolveSellableItemInventoryInformationBlock in type Sitecore.Commerce.Plugin.Inventory.InventoryConstants, Sitecore.Commerce.Plugin.Inventory.dll
- RefundCreditCardPaymentBlock in type Sitecore.Commerce.Plugin.Payments.PaymentsConstants, Sitecore.Commerce.Plugin.Payments.dll
- GetClientTokenBlock in type Sitecore.Commerce.Plugin.Payments.PaymentsConstants, Sitecore.Commerce.Plugin.Payments.dll
- Sitecore.Commerce.Engine.Connect.Search.CommerceSellableItemSearchResultItem.Tags
- Sitecore.Commerce.Engine.Connect.Search.CommerceSellableItemSearchResultItem.ListPrice
- Sitecore.Commerce.Engine.Connect.Search.CommerceSellableItemSearchResultItem.Color
- Sitecore.Commerce.Engine.Connect.Search.CommerceSellableItemSearchResultItem.Size

Removed Methods - Fulfillment plugin:
- .ctor(Sitecore.Commerce.Core.GetCountryCommand) in type Sitecore.Commerce.Plugin.Fulfillment.DoActionGetCountryRegionsBlock, Sitecore.Commerce.Plugin.Fulfillment.dll
- .ctor(Sitecore.Commerce.Core.IFindEntityPipeline, Sitecore.Commerce.Core.GetCurrencySetCommand, Sitecore.Commerce.Plugin.Inventory.GetInventoryInformationCommand) in type Sitecore.Commerce.Plugin.Inventory.GetInventoryInformationViewBlock, Sitecore.Commerce.Plugin.Inventory.dll
- .ctor(Sitecore.Commerce.Core.IFindEntitiesInListPipeline, Sitecore.Commerce.Plugin.Catalog.GetCatalogsCommand) in type Sitecore.Commerce.Plugin.Inventory.GetInventorySetCatalogsViewBlock, Sitecore.Commerce.Plugin.Inventory.dll
- .ctor(Sitecore.Commerce.Core.IFindEntitiesInListPipeline) in type Sitecore.Commerce.Plugin.Inventory.GetInventorySetsViewBlock, Sitecore.Commerce.Plugin.Inventory.dll
- .ctor(Sitecore.Commerce.Core.IFindEntityPipeline) in type Sitecore.Commerce.Plugin.Inventory.GetSellableItemInventoryDetailsViewBlock, Sitecore.Commerce.Plugin.Inventory.dll
- .ctor(Sitecore.Commerce.Plugin.Fulfillment.GetFulfillmentMethodsCommand, Sitecore.Commerce.Core.GetCountryCommand, Sitecore.Commerce.Core.ValidatePartyCommand) in type Sitecore.Commerce.Plugin.Fulfillment.DoActionGetFulfillmentMethodsBlock, Sitecore.Commerce.Plugin.Fulfillment.dll
- .ctor(Sitecore.Commerce.Plugin.Fulfillment.GetFulfillmentMethodsCommand, Sitecore.Commerce.Core.ValidatePartyCommand) in type Sitecore.Commerce.Plugin.Fulfillment.GetPhysicalFulfillmentFromViewBlock, Sitecore.Commerce.Plugin.Fulfillment.dll
- .ctor(Sitecore.Commerce.Plugin.Fulfillment.GetFulfillmentMethodsCommand) in type Sitecore.Commerce.Plugin.Fulfillment.SelectDigitalFulfillmentOptionBlock, Sitecore.Commerce.Plugin.Fulfillment.dll

Removed Methods - Inventory plugin:
- .ctor(Sitecore.Commerce.Plugin.Catalog.GetSellableItemCommand, Sitecore.Commerce.Plugin.Inventory.GetInventoryInformationCommand) in type Sitecore.Commerce.Plugin.Inventory.InventoryItemStockCountInLocationCondition, Sitecore.Commerce.Plugin.Inventory.dll
- .ctor(Sitecore.Commerce.Plugin.Catalog.GetSellableItemCommand, Sitecore.Commerce.Plugin.Inventory.GetInventoryInformationCommand) in type Sitecore.Commerce.Plugin.Inventory.IsItemInStockCondition, Sitecore.Commerce.Plugin.Inventory.dll
- .ctor(Sitecore.Commerce.Plugin.Catalog.GetSellableItemCommand, Sitecore.Commerce.Plugin.Inventory.GetInventoryInformationCommand) in type Sitecore.Commerce.Plugin.Inventory.IsItemInStockInLocationCondition, Sitecore.Commerce.Plugin.Inventory.dll
- .ctor(Sitecore.Commerce.Plugin.Catalog.GetSellableItemCommand, Sitecore.Commerce.Plugin.Inventory.GetInventoryInformationCommand) in type Sitecore.Commerce.Plugin.Inventory.IsItemOutOfStockCondition, Sitecore.Commerce.Plugin.Inventory.dll
- .ctor(Sitecore.Commerce.Plugin.Catalog.GetSellableItemCommand, Sitecore.Commerce.Plugin.Inventory.GetInventoryInformationCommand) in type Sitecore.Commerce.Plugin.Inventory.IsItemOutOfStockInLocationCondition, Sitecore.Commerce.Plugin.Inventory.dll

Removed Methods - Preorderable and Backorderable plugins:
- .ctor(Sitecore.Commerce.Plugin.Catalog.GetSellableItemCommand, Sitecore.Commerce.Plugin.Inventory.GetInventoryInformationCommand) in type Sitecore.Commerce.Plugin.Preorderable.IsItemPreorderableCondition, Sitecore.Commerce.Plugin.Preorderable.dll
- .ctor(Sitecore.Commerce.Plugin.Catalog.GetSellableItemCommand, Sitecore.Commerce.Plugin.Inventory.GetInventoryInformationCommand) in type Sitecore.Commerce.Plugin.Preorderable.IsItemPreorderableInLocationCondition, Sitecore.Commerce.Plugin.Preorderable.dll
- .ctor(Sitecore.Commerce.Plugin.Catalog.GetSellableItemCommand, Sitecore.Commerce.Plugin.Inventory.GetInventoryInformationCommand) in type Sitecore.Commerce.Plugin.Backorderable.IsItemBackorderableCondition, Sitecore.Commerce.Plugin.Backorderable.dll
- .ctor(Sitecore.Commerce.Plugin.Catalog.GetSellableItemCommand, Sitecore.Commerce.Plugin.Inventory.GetInventoryInformationCommand) in type Sitecore.Commerce.Plugin.Backorderable.IsItemBackorderableInLocationCondition, Sitecore.Commerce.Plugin.Backorderable.dll

Removed Methods - Orders plugin:
- .ctor(Sitecore.Commerce.Plugin.Catalog.IGetSellableItemPipeline, Sitecore.Commerce.Plugin.Orders.GetOnHoldOrderCartCommand) in type Sitecore.Commerce.Plugin.Orders.GetEntityViewEditLineItemBlock, Sitecore.Commerce.Plugin.Orders.dll
- .ctor(Sitecore.Commerce.Core.IFindEntityPipeline) in type Sitecore.Commerce.Plugin.Orders.ProcessDocumentSearchResultBlock, Sitecore.Commerce.Plugin.Orders.dll
- .ctor(System.String, System.String) in type Sitecore.Commerce.Plugin.Orders.PendingOrdersMinionArgument, Sitecore.Commerce.Plugin.Orders.dll
- System.String get_OrderId() in type Sitecore.Commerce.Plugin.Orders.PendingOrdersMinionArgument, Sitecore.Commerce.Plugin.Orders.dll
- System.Void set_OrderId(System.String) in type Sitecore.Commerce.Plugin.Orders.PendingOrdersMinionArgument, Sitecore.Commerce.Plugin.Orders.dll

Removed Methods - Payments plugin:
- .ctor(Sitecore.Commerce.Core.GetCountryCommand, Sitecore.Commerce.Plugin.Payments.GetPaymentOptionsCommand) in type Sitecore.Commerce.Plugin.Payments.DoActionGetCountryRegionsBlock, Sitecore.Commerce.Plugin.Payments.dll
- .ctor(Sitecore.Commerce.Core.GetCountryCommand) in type Sitecore.Commerce.Plugin.Payments.DoActionGetCountryRegionsFederatedBlock, Sitecore.Commerce.Plugin.Payments.dll
- .ctor(Sitecore.Commerce.Core.GetCountryCommand, Sitecore.Commerce.Core.ValidatePartyCommand) in type Sitecore.Commerce.Plugin.Payments.GetFederatedPaymentBlock, Sitecore.Commerce.Plugin.Payments.dll
- .ctor(Sitecore.Commerce.Core.ValidatePartyCommand) in type Sitecore.Commerce.Plugin.Payments.ValidateFederatedPaymentBlock, Sitecore.Commerce.Plugin.Payments.dll

Removed Methods - Returns plugin:
- .ctor(System.String, System.Collections.Generic.IList`1<system.string,>) in type Sitecore.Commerce.Plugin.Returns.OrderRma, Sitecore.Commerce.Plugin.Returns.dll

Removed Methods - Search:
- Sitecore.Commerce.Plugin.Search.Azure.QueryDocumentsBlock.ctor(Sitecore.Commerce.Plugin.Search.Azure.AzureContextCommand azureContextCommand) - Use Sitecore.Commerce.Plugin.Search.Azure.QueryDocumentsBlock.ctor()
- Sitecore.Commerce.Plugin.Search.Solr.QueryDocumentsBlock.ctor(Sitecore.Commerce.Plugin.Search.Solr.SolrContextCommand solrContextCommand) - Use Sitecore.Commerce.Plugin.Search.Solr.QueryDocumentsBlock.ctor(Sitecore.Commerce.Plugin.Search.Solr.SolrContextCommand solrContextCommand, Sitecore.Commerce.Plugin.SearchISearchQueryVisitorFactory factory)

Removed Methods - other:
- Sitecore.Commerce.Engine.Connect.CommerceEngineConfiguration.ctor(System.String shopsServiceUrl, System.String commerceOpsServiceUrl, System.Int32 commerceRequestTimeout, System.String defaultShopName, System.String defaultShopCurrency, System.String defaultEnvironment, System.String defaultAuthoringDatabase, System.String certificateThumbprint, System.String certificateHeaderName, System.Security.Cryptography.X509Certificates.StoreLocation certificateStoreLocation, System.Security.Cryptography.X509Certificates.StoreName certificateStoreName, System.Boolean useDeterministicFieldIdsForEntities, System.Boolean useDeterministicFieldIdsForComponents, System.String cacheMemoryLimitMegabytes, System.String cacheMemoryScaleFactor, System.String physicalMemoryLimitPercentage, System.String pollingInterval, System.Int32 cacheExpiryInSeconds) - Use instead Sitecore.Commerce.Engine.Connect.CommerceEngineConfiguration.ctor(System.String shopsServiceUrl, System.String commerceOpsServiceUrl, System.Int32 commerceRequestTimeout, System.String defaultShopName, System.String defaultShopCurrency, System.String defaultEnvironment, System.String defaultAuthoringDatabase, System.String certificateThumbprint, System.String certificateHeaderName, System.Security.Cryptography.X509Certificates.StoreLocation certificateStoreLocation, System.Security.Cryptography.X509Certificates.StoreName certificateStoreName, System.Boolean useDeterministicFieldIdsForEntities, System.Boolean useDeterministicFieldIdsForComponents)

Removed exception:
- Sitecore.Commerce.Core.Exceptions.CommerceException - Use Sitecore.Commerce.Core.CommerceException instead
Moved in XC9.3 The following pipelines have been moved to the Catalog plugin, as of XC9.3:
- Sitecore.Commerce.Core.IFindEntityIdsInSitecoreIdListPipeline
- Sitecore.Commerce.Core.IFindSitecoreIdsInListPipeline
- Sitecore.Commerce.Core.IGetCatalogMappingsPipeline
- Sitecore.Commerce.Core.IGetCatalogMappingsForIdPipeline
- Sitecore.Commerce.Core.IGetDeterministicIdsForEntityIdPipeline
Other changes in XC9.3 - Sitecore.Commerce.Plugin.Catalog.ItemSpecificationsComponent properties including: Weight, Length, Width, Height, SizeOnDisk were changed from type Int64 to Double.

- Sitecore.Commerce.Core.Commands.RunMinionCommand.Process(Sitecore.Commerce.Core.CommerceContext commerceContext, System.String minionFullName, System.String environmentName, System.Collections.Generic.IList<sitecore.commerce.core.policy> policies) method return type changed to System.Threading.Tasks.Task<sitecore.commerce.core.commands.commercecommand>

- Type Sitecore.Commerce.Plugin.Customers.CustomerStoreConnectionException, Sitecore.Commerce.Plugin.Customers.dll no longer derives from Sitecore.Commerce.Core.Exceptions.Comme.rceException, Sitecore.Commerce.Core

Storefront:
- The VisistedProductDetailsPage method in CatalogManager (Commerce Foundation layer) now expects the ID of the product from Catalog as a parameter, instead of the item ID that was previously provided.
- Removed the old ProductBundle components (from code, js, scss, items and modification in csproj) - Replaced with the latest "v-next" ProductBundle components.
Re-introduced in XC9.3 The following fields were prematurely obsoleted in a previous release, so these have been revived in XC9.3:
- Sitecore.Commerce.Engine.Connect.Search.CommerceSellableItemSearchResultItem.Manufacturer
- Sitecore.Commerce.Engine.Connect.Search.CommerceSellableItemSearchResultItem.TypeOfGood

 

Known issues

Area Description TFS no.
Storefront On Azure, brand names that contain quotation marks (") are not displayed in the Brand filter facet. 362758, 373926
Engine If a circular dependency is introduced in category associations (e.g. Category A is associated to Category B and Category B is associated to Category A), then an exception will occur when the indexing strategy is run. "Error processing block: GetCatalogHierarchyBlock ---> System.Data.SqlClient.SqlException: The statement terminated. The maximum recursion 100 has been exhausted before statement completion." 374213

 

Documentation updates

Area Description
Storefront Added a topic on presenting catalog data on the storefront.
Link to the documentation
Storefront Added a topic on specifying the storefront environment.
Link to the documentation
Storefront Added a topic on data flows between Sitecore roles, the marketing automation database and EXM database.
Link to the documentation
Storefront Added a topic on choosing between available renderings for product lists.
Link to the documentation
Storefront Added a topic on choosing between available renderings (overview).
Link to the documentation