Find.Commerce is not for Commerce Manager

I’ve seen this more than once, and this can be quite tiresome to fix the problem(s) after that. So here the TL;DR: If you are installing Find.Commerce to Commerce Manager, you are doing it wrong.

You’ll probably end up in the error like this

While loading .NET types from "EPiServer.Find.UI" the following error(s) was reported:

     - System.IO.FileNotFoundException: Could not load file or assembly 'EPiServer.Cms.Shell.UI, Version=9.3.8.0, Culture=neutral, PublicKeyToken=8fe83dea738b45b7' or one of its dependencies. The system cannot find the file specified.
File name: 'EPiServer.Cms.Shell.UI, Version=9.3.8.0, Culture=neutral, PublicKeyToken=8fe83dea738b45b7'

=== Pre-bind state information ===
LOG: DisplayName = EPiServer.Cms.Shell.UI, Version=9.3.8.0, Culture=neutral, PublicKeyToken=8fe83dea738b45b7
 (Fully-specified)
LOG: Appbase = file:///C:/EPiServer/FindSearchProvider/backend/
LOG: Initial PrivatePath = C:\EPiServer\FindSearchProvider\backend\bin
Calling assembly : EPiServer.Find.UI, Version=12.0.0.4448, Culture=neutral, PublicKeyToken=8fe83dea738b45b7.

Find.Commerce is the “extension” of Find to make working with Catalog contents easier. It’s intended to install to the CMS site only (on front-end site, depends on how you call it). As Find.Commerce relies on the content types to work, and Commerce Manager does not know – and does not care about those, therefore Find.Commerce can’t work with Commerce Manager.

The only Find-related thing that can work in Commerce Manager is FindSearchProvider. But Find.Commerce and FindSearchProvider work side by side, they do not even share the index. FindSearchProvider is simply a (for the lack of better words) “wrapper”/connector to allow the SearchProvider system to work with Find. It’s no where near as powerful as Find, but it works.

So you might ask – if you are using Find.Commerce, what to use in Commerce Manager. The answer might surprise you – but LuceneSearchProvider can just work (and it comes with the default installation of EPiServer.Commerce.Core, so no other additional package is needed. You might still need to configure the index folder, btw). The reasons for choosing Find.Commerce are it’s fast, it excels in high concurrent scenarios (both thanks to Find), and it’s easy/flexible to write complex queries. In the environment of Commerce Manager, when you don’t have to serve multiple requests at the same time, and don’t have to write your queries, then LuceneSearchProvider can be just fine.

The final question is, if, by accident, you installed Find.Commerce on Commerce Manager – how to fix it? If you don’t have the back up, then you have to uninstall it manually, including its dependency – EPiServer.CMS.UI.Core. If you are using Commerce 10+, then make sure to remove any trace of EPiServer.Shell in web.config, and any references to EPiServer.CMS.UI.Core assemblies (EPiServer.Cms.Shell.UI.dll, EPiServer.Shell.dll, EPiServer.Shell.UI.dll, EPiServer.UI.dll, and their dependents, EPiServer.Find.Blocks.dll, EPiServer.Find.Cms.dll, EPiServer.Find.UI.dll). Clean the bin folder and rebuild your Commerce Manager project should solve the problem.

Leave a Reply

Your email address will not be published. Required fields are marked *