Catalog system breaking changes
Breaking changes to catalog APIs, managers, DTOs, and related infrastructure in Commerce Connect 15.
This article covers breaking changes to the catalog system, including catalog APIs, managers, DTOs, logging infrastructure, inventory, and merchant-related functionality in Commerce Connect 15.
ICatalogSystem method removals
Multiple obsolete methods have been removed from Mediachase.Commerce.Catalog.ICatalogSystem. These methods were marked obsolete since February 2020 with guidance to use the content API instead.
GetCatalogEntriesDto overloads (removed)
The following overloads have been removed:
GetCatalogEntriesDto(int parentEntryId, string entryType, string relationType)GetCatalogEntriesDto(int parentEntryId, string entryType, string relationType, CatalogEntryResponseGroup responseGroup)GetCatalogEntriesDto(string name, string entryType)GetCatalogEntriesDto(string name, string entryType, CatalogEntryResponseGroup responseGroup)GetCatalogEntriesDto(int catalogId, int parentNodeId, CatalogEntryResponseGroup responseGroup)GetCatalogEntriesDto(int catalogId, CatalogEntryResponseGroup responseGroup)GetCatalogEntriesDto(int catalogId)GetCatalogEntriesDto(string catalogName, CatalogEntryResponseGroup responseGroup)GetCatalogEntriesDto(string catalogName)GetCatalogEntriesDto(string catalogName, int parentNodeId, CatalogEntryResponseGroup responseGroup)GetCatalogEntriesDto(string catalogName, int parentNodeId)
GetCatalogEntriesByNodeDto overloads (removed)
GetCatalogEntriesByNodeDto(string catalogName, string parentNodeCode)GetCatalogEntriesByNodeDto(string catalogName, string parentNodeCode, CatalogEntryResponseGroup responseGroup)
GetAssociatedCatalogEntriesDto overloads (removed)
GetAssociatedCatalogEntriesDto(int parentEntryId, string associationName)GetAssociatedCatalogEntriesDto(int parentEntryId, string associationName, CatalogEntryResponseGroup responseGroup)GetAssociatedCatalogEntriesDto(string parentEntryCode, string associationName)GetAssociatedCatalogEntriesDto(string parentEntryCode, string associationName, CatalogEntryResponseGroup responseGroup)
Migration path
Use IContentLoader and the catalog content API:
NoteIt’s important to note that IContentLoader does not offer direct one-to-one method equivalents.
// Before (Commerce 14) - DTO-based
var entries = catalogSystem.GetCatalogEntriesDto(catalogName,
parentNodeId, responseGroup);
// After (Commerce 15) - Content API
var entries = _contentLoader.GetChildren<EntryContentBase>(parentNodeReference);For associations between entries and entries, use IAssociationRepository. For relations between nodes and nodes, and nodes and entries IRelationRepository.
TemplateName removal from CatalogEntryDto
The TemplateName/DisplayTemplate concept for catalog entries is no longer used. The following members have been removed from Mediachase.Commerce.Catalog.Dto.CatalogEntryDto:
CatalogEntryRow.DefaultTemplateNameconstantCatalogEntryDataTable.TemplateNameColumnpropertyCatalogEntryDataTable.AddCatalogEntryRow(...)overload withTemplateNameparameterCatalogEntryRow.TemplateNamepropertyCatalogEntryRow.IsTemplateNameNull()methodCatalogEntryRow.SetTemplateNameNull()methodCatalogEntryRow.Properties.TemplateNameexpression
Entry display is determined by the content type and rendering framework. XML catalog export no longer includes DisplayTemplate for entries, and CSV imports no longer support the TemplateName column for products.
TemplateName removal from CatalogNodeDto
The same TemplateName removal applies to Mediachase.Commerce.Catalog.Dto.CatalogNodeDto:
CatalogNodeRow.DefaultTemplateNameconstantCatalogNodeDataTable.TemplateNameColumnpropertyCatalogNodeDataTable.AddCatalogNodeRow(...)overload withTemplateNameparameterCatalogNodeRow.TemplateNamepropertyCatalogNodeRow.IsTemplateNameNull()methodCatalogNodeRow.SetTemplateNameNull()methodCatalogNodeRow.Properties.TemplateNameexpression
Node display is determined by the content type and rendering framework. XML catalog export no longer includes DisplayTemplate for nodes, and CSV imports no longer support the TemplateName column for categories.
Catalog logging infrastructure removal
The entire obsolete catalog logging infrastructure has been removed:
Mediachase.Commerce.Catalog.Data.CatalogLogAdmin– Removed. This class was marked obsolete since August 2020 and was superseded by the standard logging infrastructure usingLogDtoandLogAdmin.Mediachase.Commerce.Catalog.Managers.CatalogLogManager– Removed. The static methodsGetCatalogLogandSaveLogare no longer available. Use the standard logging infrastructure (LogDtoandLogAdminclasses) for application logging.Mediachase.Commerce.Catalog.Dto.CatalogLogDto– Removed, includingCatalogLogDto.Designer.cs,CatalogLogDto.xsd,CatalogLogDto.xsc, andCatalogLogDto.xss.
ContentGuidAdmin removal
Mediachase.Commerce.Catalog.Data.ContentGuidAdmin has been removed. This class was marked obsolete since August 2020. If you require this functionality, use Mediachase.Commerce.Catalog.Internal.ContentGuidAdmin, which provides the same functionality.
NoteThe
Internalnamespace class should only be used when absolutely necessary, as it is marked for internal use.
IInventoryService.List() removal
The Mediachase.Commerce.InventoryService.IInventoryService.List() method has been removed. This method could potentially load all inventory records in the system, which is not scalable. Use targeted query methods instead:
// Before (Commerce 14) - Loads all inventory
var allInventory = _inventoryService.List();
// After (Commerce 15) - Query by specific criteria
var entryInventory = _inventoryService.QueryByEntry(new[] { entryCode });
var warehouseInventory = _inventoryService.QueryByWarehouse(warehouseCode);Merchant removal
The merchant functionality and all related database objects have been removed. The merchant functionality is considered legacy. Use modern content API patterns for managing catalog-related data.
CatalogItemChangeManager changes
The following obsolete members have been removed from Mediachase.Commerce.CatalogItemChangeManager:
| Removed Member | Replacement |
|---|---|
DisableCatalogEventDrivenIndexingSettingKey constant | Use CatalogOptions.DisableCatalogEventDrivenIndexing |
Constructor without IOptions<CatalogOptions> | Use the constructor with IOptions<CatalogOptions> |
NotifyChanges(IEnumerable<IBulkChangeItem<CatalogEntryChange>>) | Use CatalogItemChangeNotifier |
NotifyChanges(IEnumerable<int>) | Use CatalogItemChangeNotifier |
CatalogLogger constructor change
The parameterless constructor of Mediachase.Commerce.Catalog.Loggers.CatalogLogger has been removed. Use the constructor with IPrincipalAccessor and IHttpContextAccessor parameters.
SeoAddressResolver changes
The following obsolete members have been removed from EPiServer.Commerce.Routing.SeoAddressResolver:
- Constructor with
ICatalogSystemandReferenceConverter– Use constructor withSeoUriContentReferenceResolverinstead. GetCatalogContentLink(CatalogEntryDto)methodGetCatalogContentLink(CatalogNodeDto)method
ThumbnailUrlResolver constructor change
The EPiServer.Business.Commerce.Catalog.ThumbnailUrlResolver constructor without ReferenceConverter has been removed. Use the constructor that includes the ReferenceConverter parameter.
CatalogBuilder constructor change
The EPiServer.Business.Commerce.Catalog.Provider.Construction.CatalogBuilder constructor without CatalogMetaObjectRepository has been removed. Use the constructor that includes the CatalogMetaObjectRepository parameter.
CatalogItemAssetImportExport constructor change
The Mediachase.Commerce.Assets.ImportExport.CatalogItemAssetImportExport constructor without IAssetUrlResolver has been removed. Use the constructor that includes the IAssetUrlResolver parameter.
MetaDataChanged event behavior change
On MetaDataChanged events, the sync with content type model repository is now done synchronously (if possible) and not in a background thread. This may affect startup performance in implementations with large metadata models.
Updated 2 months ago
