Conga Product Documentation

Welcome to the new doc site. Some of your old bookmarks will no longer work. Please use the search bar to find your desired topic.

Show Page Sections

Merge XML Format

The goal of the Merge XML format is to ease the synchronization between CPQ Product repository and an external data source. It can be used as well as the standard FULL and DELTA formats when importing data into CPQ. It is an optimized way to partially update Product Catalogs, Standard items/Sales Products, and Business DataTables (BDT) which are considered as ‘high level’ objects.



This XML used at Import will contain only the subset of data that needs to be updated during this process.

For example, when a business property has to be updated, it is not necessary to re-import the full standard item with all its system properties and/or product links etc. Importing a Merge XML file containing the identification of the Standard Item as well as the new business property value is sufficient.

In the case of BDTs, the preprocessorData section allows you to define criterias to identify lines in BDTs. When running the import, first the identified rows will be deleted, then the rest of the import occurs. This allows you to effectively update data in BDTs.

Main Principles

The high level objects (Standard Items, Sales Products, Collections) to be updated (at least partially) during the import of a Merge XML file HAVE TO BE associated to a mergeType attribute. If these objects are not associated to a mergeType, the standard import logic applies, i.e. the object are completely deleted and re-created by using the data found in the XML file.



As soon as a high level object is associated to a mergeType attribute, all the included main XML tags have to be associated to a mergeType. Else, the Merge XML file is considered as malformed (This case is not supported).

Case OK:

<standardSalesItem eligibility="true" name="ssiChild2"

workspace="workspace" mergeType="IGNORE">

<descriptions>

<description variant="" language="en" country="US"

mergeType="UPDATE">ssiChild2Updated</description>

</descriptions>

</standardSalesItem>

Case Not OK:

<standardSalesItem eligibility="true" name="ssiChild2"

workspace="workspace" mergeType="IGNORE">

<descriptions>

<description variant="" language="en" country="US"

>ssiChild2Updated</description>

</descriptions>

</standardSalesItem>

The mergeType attribute has 3 values:

IGNORE

This value is used to identify the main objects (or sub-objects) to be taken into account during the import process. Their property data will be IGNORED (i.e. not modified) during the import process but their embedded sub-objects data flagged with a mergeType="UPDATE" will be imported and updated.

UPDATE

This value is used to identify the main objects or sub-objects and properties that will be updated and merged in their parent object during the import process. Their properties will be UDPATED as well as their embedded information flagged with a mergeType="UPDATE".

DELETE

This value is used to identify the sub-objects and properties that will be DELETED during the import process (e.g. product links). The DELETE value cannot be associated to a main high level object (Standard or Collection).

To delete a main high level object, another mechanism applies. This object has to be listed in a dedicated part of the XML file:

<objectToDeletePK objectType="SI" name="ssi3" workspace="workspace"/>

Use Cases

The following use cases are supported:

Case 1: New Collection



Case 2: New Standard Item (Creation of a SI and Link to a collection)



Case 3: Update Standard Item

  • Update System Properties / Description

  • Update Business Properties

All BPs of a BPS have to be updated simultaneously.



You can also update only one BP individually by using the "cascadeFields" on the business property set.

The cascadeField attribute allows updating only one given BP within a BPS. To do so, it has to be set directly in the XML tag of the corresponding BPS in order to decide if the update has to be cascaded on BP or not.

  • If the cascadeField is set to true, each BP must declare the mergeType
    • You can omit the BP that you do not want to update with the cascadeField set to true.
  • If the cascadeField is set to false, no mergeType is required and all BP will be updated simultaneously
  • If the cascadeField is not present, its default value is false.

  • Update Price

To update a Standard Item Price, the standard FULL XML format can be used as

the <standardPricingValuation> is considered as a high level object without any embedded elements.

  • Update Product Links

  • Update Business Properties on Product Links

Case 4: Delete Standard Item (and all its associated links/references)

Note: Deleting a standard item does not automatically delete its relations with the other objects. To avoid the creation of forged objects, when deleting an object, please ensure to clean all the dependencies and references to this object (productLinks, links between collections and the product, business property values referencing this object ….)


Warning: The mergeType mechanism must not be used in a DELTA XML file.

Case 5: Pricing lines

  • Delete a criterion line for a grid “M0”, a SI "M0" and a value "val" for the alias "alias”

  • Update a line for a period “period”, the currency “EUR” for the above criterion line:

  • Delete the above line for a period “period”:

Case 6: BDT Merging

  • Below an example with several selection criterion on BDTs - they detail what types are allowed. Structure-wise, each deleteBdtPreprocessor targets a given BDT. Within it, each deleteBdtQuery will delete elements in the BDT.

    Within deleteBdtQuery, each deleteBdtQueryElement is a condition to identify the rows. All conditions must be met to identify rows (“AND” logic).