---
title: Catalog system breaking changes
slug: commerce-connect-15/docs/catalog-system-breaking-changes
createdAt: 2026-07-30T20:34:41.000Z
---

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:

:::hint{type="info"}
**Note**
It’s important to note that IContentLoader does not offer direct one-to-one method equivalents.
:::

```csharp
// 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.DefaultTemplateName` constant
- `CatalogEntryDataTable.TemplateNameColumn` property
- `CatalogEntryDataTable.AddCatalogEntryRow(...)` overload with `TemplateName` parameter
- `CatalogEntryRow.TemplateName` property
- `CatalogEntryRow.IsTemplateNameNull()` method
- `CatalogEntryRow.SetTemplateNameNull()` method
- `CatalogEntryRow.Properties.TemplateName` expression

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.DefaultTemplateName` constant
- `CatalogNodeDataTable.TemplateNameColumn` property
- `CatalogNodeDataTable.AddCatalogNodeRow(...)` overload with `TemplateName` parameter
- `CatalogNodeRow.TemplateName` property
- `CatalogNodeRow.IsTemplateNameNull()` method
- `CatalogNodeRow.SetTemplateNameNull()` method
- `CatalogNodeRow.Properties.TemplateName` expression

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 using `LogDto` and `LogAdmin`.
- `Mediachase.Commerce.Catalog.Managers.CatalogLogManager` – Removed. The static methods `GetCatalogLog` and `SaveLog` are no longer available. Use the standard logging infrastructure (`LogDto` and `LogAdmin` classes) for application logging.
- `Mediachase.Commerce.Catalog.Dto.CatalogLogDto` – Removed, including `CatalogLogDto.Designer.cs`, `CatalogLogDto.xsd`, `CatalogLogDto.xsc`, and `CatalogLogDto.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.

:::hint{type="info"}
**Note**
The `Internal` namespace 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:

```csharp
// 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 `ICatalogSystem` and `ReferenceConverter` – Use constructor with `SeoUriContentReferenceResolver` instead.
- `GetCatalogContentLink(CatalogEntryDto)` method
- `GetCatalogContentLink(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.
