# Products and Pricing Integrations Read about Norce Commerce’s [System integration patterns](/developer-portal/system-integration/system-integration-patterns) to get more detailed information on how to build your integration. ## About the APIs For system integration with Norce Commerce use: - **Norce Commerce Connect** The API used by all system integrations is Norce Commerce Connect. Read about how use it here: [Calling Norce Commerce Connect](/developer-portal/system-integration/calling-norce-commerce-connect) - **Norce Commerce Query** The API used to lookup and fetch data is Norce Commerce Query. This is a queryable API that exposes Norce' Commerce's data layer for the solutions. Read about how to use it here: [Calling Norce Commerce Query](/developer-portal/system-integration/calling-norce-commerce-query) - **Norce Commerce Event** Norce Commerce Event starts processes when something has happened in Norce. This is a service bus that the solutions can listen to and subscribe to events. Read about how use it here: [Using Norce Commerce Event](/developer-portal/system-integration/using-norceevent) ## Product information to Norce Commerce When ERP is the master system, [ImportProducts](/api-reference/connect/productservice/openapi/product/importproducts) is called with all (or some) products that needs to be created or updated in Norce Commerce. ![Products into Norce process](/assets/productintegration-3.eb08f31cc53b0b90fd612f01e84d3aa60163a410ffe42a7b10935e36bc574afc.003e135d.png) 1. Articles are fetched or pushed from ERP to an integration. 2. The integration has business logic, mapping rules and might even do lookups to Norce Commerce Query to get all the data needed, like codes, for parametrics, categories, etc. (if needed) 3. The integration calls Norce Commerce Connect´s [ImportProducts](/api-reference/connect/productservice/openapi/product/importproducts), which updates the product catalog in Norce. ### Description To create or update products in Norce Commerce use [ImportProducts](/api-reference/connect/productservice/openapi/product/importproducts). Examples in postman: - Query [lookups](https://documenter.getpostman.com/view/2973406/2sA35MzK11#95c8e42b-6ca0-4b66-9002-d95ab69ec51c) - Connect [import products](https://documenter.getpostman.com/view/2973406/2sA35MzJve#3cb22f1f-ed7c-4625-9bea-517d9b4d8929) ### Full and delta updates ImportProducts is the largest product related import and should be called only when needed to. Use other “smaller” imports as much as possible for the smaller delta updates. Full updates of ImportProducts can for most clients be enough to do once a day. But sometimes it can be enough once a week (for exceptionally large assortments and where most data is not changed so often). Delta updates should not be scheduled more often than 2-3 times a day. Although many clients only need delta updated for prices and On Hand, and rely on full imports only for importproducts nightly. ### Examples There are some good examples in Postman on different use cases, take special not on the header object that is controlling exactly what the ERP source system is allowed to update. - [Connect Postman example](https://documenter.getpostman.com/view/2973406/2sA35MzJve#b4eee8e3-441b-463e-8097-c551d9f74e8d) - [Query lookup example in Postman](https://documenter.getpostman.com/view/2973406/2sA35MzK11#95c8e42b-6ca0-4b66-9002-d95ab69ec51c) ## Product Information from Norce Commerce In this scenario the assumption is that Norce is the article **master system** and other systems gets some of the information when new products are created and when existing products are updated. ![Products from Norce process](/assets/productintegration-4.cf6d3513ba794f53e792d47e50de6154f51247a2ed7caf0857390973fb3ad5e2.003e135d.png) 1. Changes to products (SKU's) in Norce Commerce triggers an event that puts a message to the Norce Commerce Event service bus. Exactly what changes that triggers this event are configurable in the Admin UI. 2. The integration listens for events and fetches the message from the service bus. 3. The integration has business logic, and lookups to Norce Commerce Query to get all the data needed in the target system. 4. The integration sends the changed data to the target system (ERP). ### Description To create or update products in target systems, the `SkuChangedNotification` event is configured for the client. Only one subscription is allowed per client. If there are more target systems, interested in different product fields in Norce Commerce, use the *EntityChanged* metadata to decide which systems to update. - [Administering Event types](https://norce-open-demo.admin-se.playground.norce.tech/integration/event/skuchangednotification/detail) - [ProductSkus](/api-reference/query/queryproducts/openapi/products/productskus) in Norce Commerce Query ### Examples and other resources - Query examples in postman - [Product information from Norce](https://documenter.getpostman.com/view/2973406/2sA35MzK11#63dede89-30cb-4f96-a644-11b28610ac12) - Norce Commerce Event - [Using Norce Event](/developer-portal/system-integration/using-norceevent) ## Price Information to Norce Commerce This section describes how prices are integrated between Norce Commerce and price system. In this basic setup standard prices comes from the ERP and other pricelists are maintained solely in Norce Commerce. ![Prices into Norce process](/assets/productintegration-5.7b8d422c84bea5d1a16185a7c2df9a08e14aab3a076031b9326254e2cef574eb.003e135d.png) 1. Prices are fetched or pushed from ERP to an integration. 2. The integration has business logic, mapping rules and might also do lookups to Norce Commerce Query to get all the data needed. 3. The integration calls Connect API´s [ImportSkusPriceLists](/api-reference/connect/productservice/openapi/product/importskupricelists), which updates the product catalog in Norce Commerce. ### Description [ImportSkusPriceLists](/api-reference/connect/productservice/openapi/product/importskupricelists) takes an enumerable of [SkuPriceList](/api-reference/schemas/connectproduct#skupricelist) entities and updates Norce Commerce if changes has been made. > If you just pass in `SalePrice` the price rule is set to “Fixed price” automatically. ### Full and Delta updates Note If you have one base price list that is maintained from a source system, the best way is to use the *StandardPrice* in [ImportProducts](/api-reference/connect/productservice/openapi/product/importproducts) for setting the full import. If you have more than one price list maintained, you can send in a full import with product prices for all the price list in same import (other price lists will not be changed or deactivated). Full updates are usually daily or left to [ImportProducts](/api-reference/connect/productservice/openapi/product/importproducts). Delta updates are scheduled between 1-12 times a day, usually. If prices changes often, hourly scheduled updates is about enough. > `PartNo`, `PricelistCode` (called "Agreement" in Query) and `QuantityBreak` (default is “1”) must be provided for Norce Commerce to update the prices correctly. > Products are not created or deactivated from `ImportSkuPriceList` calls. Use `ImportProducts` to create or set product status. ### Examples and other resources - Norce Commerce Connect - [Code examples](/developer-portal/system-integration/product-integration-examples) - [Postman examples](https://documenter.getpostman.com/view/2973406/2sA35MzJve#b4eee8e3-441b-463e-8097-c551d9f74e8d) - Norce Commerce Query - [Postman examples](https://documenter.getpostman.com/view/2973406/2sA35MzK11#561115d4-40a0-4237-a9ce-6abc21e0d218) ## Price Information from Norce Commerce In this scenario Norce Commerce is master for pricing logic and other system needs to be updated when the prices change. ![Prices from Norce process](/assets/productintegration-6.192d971d8cba9f4ad2bf4f12dacb7de7c45e78dacaa0f6b29713a999446bd8e6.003e135d.png) This isa similar scenario as for product information extractions, above. ### Description To create or update prices in target systems, the `SkuPriceChangedNotification` event is configured for the client. Only one subscription is allowed per client. - [Administering Event types](https://norce-open-demo.admin-se.playground.norce.tech/integration/event/skupricechangednotification/detail) - [ProductSkus](/api-reference/query/queryproducts/openapi/products/productskus) in Norce Commerce Query - [ProductSkuPriceLists](/api-reference/query/queryproducts/openapi/products/productskupricelists) in Norce Commerce Query ### Examples and other resources - Norce Commerce Query - [Postman examples](https://documenter.getpostman.com/view/2973406/2sA35MzK11#561115d4-40a0-4237-a9ce-6abc21e0d218) - Norce Commerce Event - [Using Norce Commerce Event](/developer-portal/system-integration/using-norceevent) ## Availability Information to Norce Commerce This section describes how on hand information are integrated between Norce Commerce and the WMS. ![Onhand to Norce process](/assets/productintegration-6.192d971d8cba9f4ad2bf4f12dacb7de7c45e78dacaa0f6b29713a999446bd8e6.003e135d.png) 1. Onhand information are fetched or pushed from WMS to an integration. 2. The integration has business logic, mapping rules and might even do lookups to Norce Commerce Query to get all the data needed. 3. The integration calls Norce Commerce Connect´s [ImportOnHands](/api-reference/connect/productservice/openapi/product/importonhands), which updates the product catalog in Norce Commerce. ### Description [ImportOnHands](/api-reference/connect/productservice/openapi/product/importonhands) takes an enumerable of [SkuOnHand](/api-reference/schemas/connectproduct#skuonhand) entities and updates Norce if changes has been made. Note There is a difference for Norce Commerce if the onhand value is 0 or if the product is deactivated for a warehouse. The latter means that the product cannot be handled by the specific warehouse and might change the behavior of the availability business rules. ### Full and delta updates > Full imports will deactivate onhand on all products not included in the import. But only for the warehouses/locations included. So, if you have different source systems responsible for different warehouses you can have more than one full import handling the different sources. Most integrations have daily full imports of onhands. Delta imports varies between 3-4 times a day to 3-4 times an hour, depending on the need for accuracy in Norce Commerce. ### Examples and other resources - Norce Commerce Connect - [Code examples](/developer-portal/system-integration/product-integration-examples) - Postman [examples](https://documenter.getpostman.com/view/2973406/2sA35MzJve#d7cbb331-5fdf-4a07-aa6f-2f853d60599c) - Norce Commerce Query examples - Postman [examples](https://documenter.getpostman.com/view/2973406/2sA35MzK11#2bf5fc21-1e05-4134-8670-09aa847a1e67) ## Other integrations ### Price lists to Norce Commerce It is possible to manage whole price lists in Norce Commerce from a source system. This is usually when an ERP system has contract price lists for specific customers or companies. To do this, you first need to call [ImportPriceLists](/api-reference/connect/productservice/openapi/pricelist/importpricelists) to create (and change) price list information in Norce Commerce, and after you can call [ImportSkuPriceLists](/api-reference/connect/productservice/openapi/product/importskupricelists) to set price information on the products (see above). #### Description [ImportPriceLists](/api-reference/connect/productservice/openapi/pricelist/importpricelists) takes an enumerable of [PriceList](/api-reference/schemas/connectproduct#pricelist) entities and updates Norce Commerce if changes has been made. #### Full and delta updates Usually only full updates is used. Most common is once a day. > The Price list `code` is unique for a price list on a client level, make sure not to re-use price list codes. ### Images and files to Norce Commerce Use [ImportProducts](/api-reference/connect/productservice/openapi/product/importproducts) and add `MainImage` and `AdditionalImages` to import both images and other files to the product catalog. > The field `ExternalCode` identifies the image in Norce Commerce, this makes it possible to separate adding more images to a product from replacing existing images. > **Url** to image, can be a public http(s), ftp or ftp together with username and password, i.e. `ftp://username:password@hostname/` #### Examples and other resources - Norce Commerce Connect - Postman [examples](https://documenter.getpostman.com/view/2973406/2sA35MzJve#3cb22f1f-ed7c-4625-9bea-517d9b4d8929) ### Competitor information to Norce Commerce For competitor pricing functionality Norce Commerce needs competitor information from a source. This could be a 3rd party, like a price comparison service, or from the customer. Norce Commerce has adapters for the more common comparison services on the Nordic market, but for others this must be integrated through this API. #### Description [ImportCompetitorSkus](/api-reference/connect/productservice/openapi/competitor/importcompetitorskus) takes an enumerable of [CompetitorSku](/api-reference/schemas/connectproduct#competitorsku) entities and created or updates competitor information on products in Norce Commerce. #### Full and delta updates Most commonly only full imports is done. Usually daily. #### Examples and other resources - Norce Commerce Connect - Postman [Examples](https://documenter.getpostman.com/view/2973406/2sA35MzJve#7550e0d8-184f-4331-93e6-90f71ed28a2c) ## Suggested further reading - [Product integration scenarios](/developer-portal/system-integration/product-integration-scenarios) - .net Code examples - [Jobs](/developer-portal/system-integration/job-check-examples) - [Product](/developer-portal/system-integration/product-integration-examples) - Postman [examples](https://documenter.getpostman.com/view/2973406/2sA35MzJve#72729e05-e755-466a-bbfe-84dc8e82eac5) - [System integration patterns](/developer-portal/system-integration/system-integration-patterns) - [Calling Norce Commerce Connect](/developer-portal/system-integration/calling-norce-commerce-connect) - [Calling Norce Commerce Query](/developer-portal/system-integration/calling-norce-commerce-query) - [Using Norce Commerce Event](/developer-portal/system-integration/using-norceevent)