Defining catalog aware item types

Sometimes, it is required to define our custom item types as Catalog aware item types in order to make them eligible for synchronization.

It means we need to associate these custom item types with a catalog (content or product)

We can achieve this either in HMC/Backoffice or by defining required attributes in items.xml file.

Note : Here we will not discuss about HMC/Backoffice way as it does not persist for a long time.


Let’s see how we can make item types as catalog aware using items.xml

Step 1:

Enable item type as catalog item type, using custom property catalogItemType

Step 2:

Define the attribute catalogVersionAttributeQualifier with value same as qualifier of catalogversion attribute in the same item type.

Step 3:

Define the attribute uniqueKeyAttributeQualifier with value same as qualifier of unique attribute in the same item type and if there are multiple unique attributes then separate them by comma.

So with these steps, new item type definition in items.xml will be as below

  1. <itemtype code="MyCustomItemType" autocreate=true” generate=true>
  2. <deployment table=" MyCustomItemType " typecode="12500"/>
  3.    <custom-properties>
  4.       <!-- Defining the type as synchronizing capable here: -->
  5.       <property name="catalogItemType">
  6.          <value>java.lang.Boolean.TRUE</value>
  7.       </property>
  8.  
  9.       <!-- defining catalog version attribute here: -->
  10.       <property name="catalogVersionAttributeQualifier">
  11.          <value>"catalogVersion"</value>
  12.       </property>
  13.        
  14.       <!-- defining unique key attributes here; separate multiple attribute qualifiers by commas: -->
  15.       <property name="uniqueKeyAttributeQualifier">
  16.          <value>"code"</value>
  17.       </property>
  18.    </custom-properties>
  19.    <attributes>
  20.       <attribute qualifier="code" type="java.lang.String">
  21.          <modifiers read="true" write="true" search="true" optional="false" unique=true/>
  22.          <persistence type="property"/>
  23.       </attribute>
  24.    
  25.       <attribute qualifier="catalogVersion" type="CatalogVersion">
  26.          <modifiers read="true" write="true" search="true" optional="false"/>
  27.          <persistence type="property"/>
  28.       </attribute>
  29.    </attributes>
  30.  
  31. </itemtype>
<itemtype code="MyCustomItemType" autocreate=”true” generate=”true”>
<deployment table=" MyCustomItemType " typecode="12500"/>
   <custom-properties>
      <!-- Defining the type as synchronizing capable here: -->
      <property name="catalogItemType">
         <value>java.lang.Boolean.TRUE</value>
      </property>
 
      <!-- defining catalog version attribute here: -->
      <property name="catalogVersionAttributeQualifier">
         <value>"catalogVersion"</value>
      </property>
       
      <!-- defining unique key attributes here; separate multiple attribute qualifiers by commas: -->
      <property name="uniqueKeyAttributeQualifier">
         <value>"code"</value>
      </property>
   </custom-properties>
   <attributes>
      <attribute qualifier="code" type="java.lang.String">
         <modifiers read="true" write="true" search="true" optional="false" unique=”true”/>
         <persistence type="property"/>
      </attribute>
   
      <attribute qualifier="catalogVersion" type="CatalogVersion">
         <modifiers read="true" write="true" search="true" optional="false"/>
         <persistence type="property"/>
      </attribute>
   </attributes>
 
</itemtype>


Once above configuration is done, We need to build and also need to update the platform using system update.

After that above item type is synchronizable which means source content of this item type will be copied to target automatically when we do synchronization.

About the Author

Founder of javainsimpleway.com
I love Java and open source technologies and very much passionate about software development.
I like to share my knowledge with others especially on technology 🙂
I have given all the examples as simple as possible to understand for the beginners.
All the code posted on my blog is developed,compiled and tested in my development environment.
If you find any mistakes or bugs, Please drop an email to kb.knowledge.sharing@gmail.com

Connect with me on Facebook for more updates

Share this article on