We have a reasonably large catalog running on Commerce 9.6 with 37 000 SKU's mapped into products making up a total 56 434 CatalogEntries. The catalog is completely maintained with InRiver PIM, which means that the metadata is also created by the InRiver connector.
Initially we had not configured the InRiver connector properly, which meant that a LOT of unnecessary metafields were pushed into the catalog. This was not an issue before but now the catalog has grown in size to a point where I feel were seeing performance degradation because of the "garbage" metadata. The rowcount of CatalogContentProperty for custom MetaFields mapped to CatalogEntries is 2219264 which averages to about 39 MetaFields per CatalogEntry, when the optimal count would around 25 MetaFields.
In this thread there's instructions on how to unlink MetaFields from MetaClasses after which the MetaFields can be deleted completely:
The problem I'm having, is that I could only unlink four newest MetaFields successfully. After this, when I do these steps:
Go to the Commerce Manager Administration section => Catalog => MetaClass => Select the type of class (Node or Entry), then select the MetaClass you would like to edit. Then uncheck the properties you don't want to be in the MetaClass, then click OK to save.
I get the "Changes have been successfully saved." notification BUT the link is not removed and the corresponding checkbox remains checked. This obviously means that I can't delete the MetaFields as the links between MetaClasses are not removed.
The MetaClasses and most of the MetaFields were created in Commerce 7.5 in 2015 and our environment has since been reguraly updated to version 9.6 where we are currently.
Is this a glitch in our version of Commerce Manager or is our database possibly corrupt?
Note that the unlinking metafield only works with "non-code" metafield, i.e. metafiels without a mapped property in your strongly typed content type. If you have strongly typed content type, then the content type always "rule"
If it's not the case I'd suggest to look into the log file to see if you get any errors. You might need to contact developer support service so this can be properly investigated.
Thanks for the quick response. The case is exactly how you describe, most of the metafields are mapped to strongly typed content types. The ones I managed to unlink were created outside the code.
On another topic regarding performance, our catalog contains several items (around 40% of total count ) which are discontinued and thus not visible in store but for order history etc data integrity purposes can't be deleted from the catalog. We can exclude these items from indexing, searches and other processes but does this extra mass affect the catalog import performance negatively?
As a rule of thumb, more rows = more impact on performance. But Episerver Commerce should be able to handle that. Making sure your indexes are healthy is one good way to ensure performance: http://vimvq1987.com/2017/08/maintaining-your-indexes/
Is there any way to remove a metadata field that was created via a strongly typed content type? I have all content type properties commented out, and I still cannot delete meta fields that were created via code.
If meta field is created via code then first of all you need to remove entry from code. Once it is remove from code then you can use Commerce Manager Administration to unlink and delete meta field.
If you do not remove it from code then you can not unlink it and you can not delete meta field. Hope that helps