Fixing Catalog Manager issue – Sitecore Commerce powered by Commerce Server

While all Business Users should definitely use Merchandising Manager from within Sitecore to manage all catalog data, including inventory data if you’re using the Inventory System, there’s still scenarios where the use of Catalog Manager makes sense, being:

  • Fast and easy overview of all catalog-related data in a Commerce Server Site
  • Troubleshooting
  • Import/export

If you’ve installed the Reference Storefront package on top of Sitecore Commerce Server Connect, part of this installation the “Adventure Works Catalog” will be imported to Commerce Server Catalog System, thus making it available for editing in the Merchandising Manager. All good – it works fine from within Sitecore (Content Editor, Experience Editor and Merchandising Manager). The issue arise if you open up the “Catalog Manager” business tool, and try to open up any of the products. You’ll be facing with the following error message:

catalogmanager-error

If you open up the Event Viewer on that machine, you’ll find the following error message to be present:

CommerceServer.Core.ServerFaultException: Failed to retrieve the AzMan Scope named InventoryCatalog_Adventure Works Inventory. ---> System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Failed to retrieve the AzMan Scope named InventoryCatalog_Adventure Works Inventory. ---> CommerceServer.Core.ServerFaultException: Failed to retrieve the AzMan Scope named InventoryCatalog_Adventure Works Inventory.

This error actually states that there’s a problem with authorization – the “Authorization Manager” / “AzMan” is missing an authorization scope for the “InventoryCatalog_Adventure Works Inventory” inventory catalog. The reason why this happens is that any schema-related change taking place in the “Merchandising Manager”, e.g. creating/deleting catalogs and inventory catalogs is not propagated to the Catalog web-service. This is essentially good – because we really don’t want our Runtime System / Sitecore / CM / Merchandising Manager to take any dependency on the Catalog Web Service thus adding extra complexity.

Fixing it

There’s a tool shipped with Sitecore Commerce Server that allows you to recreate the catalog authorization store file, CatalogAuthorizationStore.xml. Here’s what you’ll do to fix the issue:

  1. Log-on to the machine where you have Commerce Server installed
  2. Go to IIS, locate the Virtual Directory for CatalogWebService
  3. Click “Explore” – to open up the folder where the CatalogWebService files are placed
  4. CTRL + C the path of the folder to your Clipboard, e.g.:
    1. C:\inetpub\wwwroot\Explore.Storefront\Services\CSSolutionStorefrontsite_CatalogWebService
  5. Backup the existing “CatalogAuthorizationStore.xml”
  6. Search for “Tools command prompt” on your windows machine, and run that tool
    1. This will open up a Command shell window
  7. Run the following command
    1. CreateCatalogAuthorizationStore.
      exe CSSolutionStorefrontSite “C:\inetpub\wwwroot\Explore.Storefront\Services\CSS
      olutionStorefrontsite_CatalogWebService\CatalogAuthorizationStore.xml”
  8. That’s it. You should now be able to show details of all products in the Catalog Manager

Troubleshooting

If it does not work, try any of the following:

  1. Ensure that the App Pool Identity for the CatalogWebService has “Write”-permission to the CatalogAuthorizationStore.xml file
  2. Recycle your App Pool / Restart IIS
  3. Close and open the Catalog Manager
  4. Ensure that your Windows User, accessing Catalog Manager, has permissions setup – this is done in the Authorization Manager (AzMan.msc)

 

 

 

Skriv et svar

Udfyld dine oplysninger nedenfor eller klik på et ikon for at logge ind:

WordPress.com Logo

Du kommenterer med din WordPress.com konto. Log Out / Skift )

Twitter picture

Du kommenterer med din Twitter konto. Log Out / Skift )

Facebook photo

Du kommenterer med din Facebook konto. Log Out / Skift )

Google+ photo

Du kommenterer med din Google+ konto. Log Out / Skift )

Connecting to %s