ART#301 - What is Product Catalog in ATG?

The main core of ATG is commerce, now that we know the basics of the application, and understand the repositories, we can safely proceed to commerce.

Before we start with anything technical, you might like to re-visit our small article on HOW E-COMMERCE WORKS. (This is a very small article, and i would suggest you to read it once before you proceed with this article)

Before starting with any e-commerce application, or a real life store, we must have something to sell. In a supermarket or a big grocery store, all the items which they sell are neatly categorized, so that it is easy for a customer to find an item of his own choice.

We aim to take that experience online. In terms of ATG, a collection of all the categories, products, SKUs, promotions neatly organized into a single place is called a catalog. An ATG catalog contains a lot of other stuff required from e-Commerce perspective, which we will cover as and when needed.


1. A Catalog consists of a number of categories.
2. Categories may contain subcategories OR Products OR both.
3. Each Product must have at-least one SKU.
4. SKU refers to "Stock Keeping Unit". You might go to a store and find a pair of Jeans of a particular brand and design. That is your "product". That product may have a number of sizes, each of which can be sold. That "sellable" item form actual stock is called a SKU.
5. A SKU may not be restricted to only size. A particular product may also be available in multiple colors. Therefore, in that case a color-size combination can be considered as a SKU.
Although, many brand consider a different color as a different product altogether. That depends on how you configure your SKU/Products as per your need.

See below diagram for more details.


ATG provides an out-of-the-box repository called /atg/commerce/catalog/ProductCatalog. This repository holds, catalog, categories, products, SKUs and a lot of other stuff. This repository is a versioned repository, and can only be modified by business users using Business Control Center (BCC) module of ATG. 

Since, this is a repository, it must be having a repository-xml file to represent various item-descriptors it carries. If you see the definitionFiles property of this repository, you'll see that it refers to an XML, /atg/commerce/catalog/custom/customCatalog.xml
You can simply override this xml in your layer and customize the item-descriptors as per your need. There might be different ways of extending the product-catalog which we will cover soon.


A catalog may have a lot of categories, but it has to start the navigation from some place. There is a property in "catalog" item-descriptor called "rootCategories". We can specify any category-id as the value of this property. This category will be considered as the top-level of the product catalog. This property can have multiple values.
Let us not go into, HOW we populate this field. We will cover the population of data into ProductCatalog, when we cover BCC.
The whole structure of the catalog, like creating new catalogs/categories/products etc. can be done very easily via BCC. The linkage of catalog to categories, categories to products etc. is also done via BCC.

Now that we know what a catalog is, and how ATG represents it, we can now go on to understand the various ways of extending product catalog, apart from the standard way of extending repositories.

Previous Chapter!



  1. It is really good tutorials.

    Waiting for the more ATG commerce tutorials.

  2. Really Good. When is the rest of the commerce tutorial expected?

  3. amazing tutorial when will the next one be out? thank you

  4. Thanks a lot and Waiting for next concepts eagerly .

  5. Explained in very simple words.
    Thanks to you :)

  6. @Author: Its mentioned that ProductCatalog can only be edited using BCC but it can be done using ACC & DynAdmin as well. Is it right?

    1. Yes, it is technically possible to edit Versioned Repositories like ProductCatalog via ACC and dyn/admin.
      And why limit to that, you can also change data directly from SQL queries in your database.
      But you should NEVER do that because of below reasons:-
      1. dyn/admin and ACC would update the data in current live data source.
      2. the data will not be updated in the other switching datasource.
      3. the data will not be updated in the Publishing datasource.
      4. There will be no track of your item-descriptor's versioned data.

      Hope that answers your question.

  7. Hi Monis can you please tell me how to create a non-versioned repository and access that repository in BCC ?



Get All The Latest Updates Delivered Straight Into Your Inbox For Free!