Working with Products and Search using Norce Commerce Product Feed

There are two patterns of working with Products and Search: one is to primarily use Norce Commerce Services methods and functions, along with a cache for better performance (you can read about this approach here), while the other is to use external search engines that are updated from Norce Commerce using the Product Feed, which is described below.

You can also read about Building a Norce Commerce Product Feed Receiver for more technical information and concerns about the Product Feed Service.

You can find the api references to the Product Feed service here and the schemas Product and ProductStatus.

It's also possible to use a combination of both approaches, where (for example) the external search service handles the initial search while the Norce Commerce Services loads the filters from that result. The best solution for you depends on the systems you use and the size and complexity of your product catalog.

Logical architecture with an external search

Logical schema

The idea of using another search engine is to build up that data from the product catalog in Norce. However, you may need to directly fetch certain information, such as availability and prices, which change frequently and are crucial for displaying accurate data. This data may even have important logic dependencies, such as determining whether a product is out of stock.

Export a full feed every morning and maybe delta feeds several times a day. If the products are displayed in a list, ask Norce Commerce Services directly for the most important data.

Using a product feed to fill a search

Process schema

  • Set up the Product Feed Service to export full catalogs as often as necessary, preferably at a time when there is less traffic.
  • Use the delta for adding changes to the full catalog from time to time. If something goes wrong, and a delta feed is not imported correctly, the next full feed will fix it.
  • Use ProductStatus for the exports you want to do most often.

Here are some good starting points for different kinds of clients, but feel free to adjust these based on your solution needs and requirements.

Functionality Client 1 (normal) Client 2 (availability sensitive) Client 3 (supplier sensitive) Client 4 (price sensitive)
Client description Assortments doesn't change that often, prices and availability do change, but there is no critical factors here. Assortments doesn't change that often, but availability do change a lot and its crucial to not over-sell products out of stock. Assortments changes fairly often, many suppliers and rules based on suppliers, important to have correct price. Assortments doesn't change that often, and availability is not sensitive. But many companies have their own prices.
Full exports Every week (Sunday mornings) Every week (Sunday mornings) Every morning Every week (Sunday mornings)
Delta export Every morning Every morning Hourly Every morning
Product status exports Hourly Hourly (this will directly give information on inactive products, if an expiring product is out of stock) 3-4 times an hour (this return not only changes to prices but also changes on suppliers and which supplier that is currently primary) Hourly
Calls to Norce Commerce Product Service directly Not needed To be on the safe side, All products with on hand under the StockBreakPoint, will be checked directly in Norce. Both by calling GetProductOnHandByPartNo (on product page) and ListProductOnHandByBasket in the checkout. Not needed For guest users standard price is shown. But when logged in, the search is used for listing and navigation and the paged result is supplemented with price information from Norce (ListProductsByIds3).
Note

See Availability structures for information about how to use OnHand functionality in Norce Commerce.

Additional Product Feed exports

If you have many different target systems, that have specific price lists and assortments, create a main feed for the large Product export and use separate feeds for each specific assortment and price. Use the smaller ProductStatus full export and add additional information from the main export, in your mapping process.

Suggested further reading