November Happy Hour will be moved to Thursday December 5th.

Unable to unlink MetaField from MetaClass

Vote:
 

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:

https://world.episerver.com/Modules/Forum/Pages/Thread.aspx?id=142928

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?

#182168
Sep 12, 2017 9:01
Vote:
 

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. 

#182180
Sep 12, 2017 9:59
Vote:
 

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?

#182200
Sep 12, 2017 11:23
Vote:
 

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/

#182201
Sep 12, 2017 11:27
Vote:
 

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.

#206398
Aug 19, 2019 19:50
Vote:
 

Hi Steve

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

#206447
Aug 21, 2019 14:14
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.