Skip to main content

OroCommerce Kit Product From iPaaS.com Mapping Documentation

Map Kit product data from iPaaS.com to OroCommerce

OroCommerce Kit Product From iPaaS.com Mapping Documentation

When a product is created or updated in iPaaS.com with TrackingMethod = Product and includes a kit with at least one valid kit component, the corresponding product record is created or updated in OroCommerce as a Kit product. This integration runs in the FROM iPaaS.com direction and is triggered on product Create and Update events. It ensures accurate and consistent synchronization of kit product data, including kit items, organizational structure, product units, tax code, pricing, and related attributes, between iPaaS.com and OroCommerce.

Before You Begin

Ensure the following prerequisites are in place before configuring this integration. The deeper behavior behind each item is described in the System Caveats and Setup Requirements sections later in this article.

iPaaS.com Requirements

  • The product record must have a valid SKU, Name, Default Price, and Status.

  • TrackingMethod must be set to "Product".

  • The product must include a Kit with at least one valid Kit Component.

  • The product Type must be populated.

  • Kit Component SKUs must exist in OroCommerce before the kit product is created.

OroCommerce Requirements

  • The following entities must exist before product creation if they are referenced: Organization, Business Unit (Owner), Attribute Family, Inventory Status, Tax Code, Brand, Category, Price List (for default pricing), and Product Units.

  • Products referenced as Kit Components must already exist in OroCommerce.

  • The OroCommerce credentials configured in the subscription must have permission to create and update products and kit items.

  • Custom fields must be created in OroCommerce before mapping; a schema update may be required.

ID Format

When manually transferring a product from iPaaS.com, enter the valid iPaaS.com Product internal ID into the input field on the iPaaS.com manual sync page.

  • Example: 197689

External ID Format

The OroCommerce Product ID is saved as the external ID in iPaaS.com after a successful transfer.

  • Example: 288

Custom Field Support

This integration supports the use of custom fields. To map data from iPaaS.com into a custom field in OroCommerce, follow the steps below.

  1. Navigate to Entity Management: Go to System > Entities > Entity Management.

  2. Select the Target Module: Locate and select the module (entity) where you want to add the custom field (for example, Product).

  3. Create a Custom Field: Click Create Field and configure the following required values:

    • Field Name: Provide a unique name. This value should start with a letter and contain only alphabetic characters, underscores, and numbers.

    • Storage Type: Select "Serialized field" or "Table Column". For Table Column fields, a schema update is required before the custom field becomes available. Serialized Field custom fields are added automatically.

    • Type: Set the field type as "string", "datetime", "integer", "float", "decimal", "boolean", or "enum". All of these are supported when using compatible mappings.

  4. Update the Schema: After creating a field with the Table Column storage type, a red Update Schema button appears. Click Update Schema to apply the changes.

    • Note: Contact your OroCommerce administrator before updating an entity schema to prevent unexpected service downtime.

  5. iPaaS.com Subscription Custom Field Configuration: Once the schema update is complete (if required), configure the custom field in iPaaS.com:

    • Go to the OroCommerce subscription > Custom Fields.

    • Create the custom field using the exact Field Name and Type from OroCommerce for the Name and Data Type of the iPaaS.com subscription custom field.

    • Select the "Product" Module and click Save.

    • Open the relevant mapping collection and add a new mapping by selecting the desired destination custom field. The source can be configured based on the custom field's requirements.

Default Pricing Custom Field Support

Default Pricing also supports custom fields. The steps are the same as above, with two differences:

  • Select the Product Price entity as the target module when creating the custom field in OroCommerce.

  • When creating the matching subscription custom field in iPaaS.com, prepend the prefix DefaultPricing_ to the field name.

Mapping Collection Status

  • Status: Enabled

  • Trigger Events: Create, Update

A mapping filter restricts which records are processed (see the Mapping Filter for each collection below). Only products with TrackingMethod = Product and at least one kit component qualify as Kit products; products that do not meet these conditions are handled by other product mapping collections.

Duplicate or Conflicting Mappings

This entity is served by separate Add and Update collections, and OroCommerce products are also synchronized by Simple and Configurable product collections. The following collections operate on OroCommerce products from iPaaS.com:

  1. Add OroCommerce Kit Product FROM iPaaS.com (documented here)

  2. Update OroCommerce Kit Product FROM iPaaS.com (documented here)

  3. Add OroCommerce Simple Product FROM iPaaS.com

  4. Update OroCommerce Simple Product FROM iPaaS.com

  5. Add OroCommerce Configurable Product FROM iPaaS.com

  6. Update OroCommerce Configurable Product FROM iPaaS.com

The Kit Product filter (TrackingMethod == "Product" with one or more kit components) is mutually exclusive with the conditions handled by the Simple and Configurable collections, so a given product is processed by only one product flow.

Collision Handling

These collections support collision handling, which controls what happens when a kit product created from iPaaS.com matches a product that already exists in OroCommerce. A collision is detected when the incoming product's SKU already exists in OroCommerce. The integration finds the existing OroCommerce product by SKU and reuses its ID so the transfer continues as an update of that product instead of failing or creating a duplicate.

You choose how collisions are resolved by setting the collision handling method on the mapping collection in your subscription. The available options are:

  • Error — reject the transfer and report the duplicate as an error. No record is created or updated.

  • Remap and Link — link the incoming record to the matching OroCommerce product, then rerun the transfer as an update.

  • Update and Link — update the matching OroCommerce product and link the incoming record to it. This is the method these collections ship with by default.

  • Update and No Link — update the matching OroCommerce product but do not link the incoming record to it.

When the method is set to Error, a duplicate SKU produces a conflict error in the iPaaS.com error logs. To change that behavior, select a different collision handling method on the mapping collection. See the OroCommerce Integration Error Messages article for the conflict error and its resolution.

Supported Child Collections

This flow uses one child collection, and that child has its own child collection, in order to create Kit products in OroCommerce. All attributes and relationships are handled within the parent mapping collection except for Kit Items, which use the following collections:

  1. Parent: Add / Update OroCommerce Kit Product FROM iPaaS.com

  2. Child: Add / Update OroCommerce Kit Item FROM iPaaS.com

  3. Child: Add / Update OroCommerce Kit Item Product FROM iPaaS.com

A single iPaaS.com Kit contains multiple Kit Components. This is mapped into OroCommerce as multiple Kit Items, each containing multiple Kit Item Products. For each Kit Component, an existing OroCommerce product is linked through a child transfer so that Kit Item Products reference valid product entities.

Kit Items Update Behavior

During product updates from iPaaS.com, Kit Item records in OroCommerce are deleted and recreated as part of the standard synchronization process. This occurs on every product update, even when no changes have been made to the kit definition or its components. This behavior is required to ensure consistency of kit configuration, including support for scenarios such as kit component removal or restructuring, and reflects default OroCommerce handling of kit items during updates.

System Caveats

OroCommerce Caveats

  • Dynamic Relationship Resolution: Relationship entities such as Organization, Owner (Business Unit), Attribute Family, Inventory Status, Tax Code, Brand, and Category must exist beforehand if they are referenced. These relationships are resolved dynamically by lookup translations or custom functions that retrieve the corresponding internal IDs based on the entity's name, code, or other mappable fields.

  • Dynamic Relationship Creation: The following relationships can be created dynamically through the OroCommerce Product API using the included object: Names, Descriptions, Short Descriptions, Slug Prototypes, Meta Titles, Meta Descriptions, Meta Keywords, Unit Precisions, Primary Unit Precision, Product Shipping Options, Page Template, Manage Inventory, Inventory Threshold, Low Inventory Threshold, Highlight Low Inventory, Minimum Quantity to Order, Maximum Quantity to Order, Backorder, Decrement Quantity, and Is Upcoming. These fields are included only if they are mapped.

  • Relationship Type required with relationship Id: When a relationship Id field is mapped, the corresponding Type field must also be mapped, or the relationship is not assigned even when the Id is provided. This pattern applies to all relationship fields.

  • Kit components must already exist: Only kit components whose SKUs already exist in OroCommerce are included in the kit. Valid iPaaS.com products that exist as kit components are created during preprocessing, which helps ensure that valid kit component SKUs already exist in OroCommerce.

  • Status values are constrained: The OroCommerce product Status attribute supports only "enabled" or "disabled".

  • Schema updates can cause downtime: Contact your OroCommerce administrator before updating an entity schema to prevent unexpected service downtime.

iPaaS.com Caveats

  • The product record must have a valid SKU, Name, Default Price, and Status.

  • TrackingMethod must be set to "Product".

  • The product must include a Kit with at least one valid Kit Component.

  • Custom field names in iPaaS.com must exactly match the OroCommerce field names and types.

  • It is recommended to include only one item in localized lists (Names, Descriptions, Meta Titles, and so on) unless multiple localizations are required.

Setup Requirements

OroCommerce

The following entities must exist before product creation if they are referenced: Organization, Business Unit (Owner), Attribute Family, Inventory Status, Tax Code, Brand, Category, Price List (for default pricing), and Product Units. Products referenced as kit components must already exist in OroCommerce. API credentials must have permission to create and update products and kit items. Custom fields must be created in OroCommerce before mapping; a schema update may be required.

iPaaS.com

The OroCommerce subscription must be configured with valid OroCommerce credentials stored securely in the iPaaS.com credential manager. OroCommerce uses OAuth 2.0 (Authorization Code) authentication to generate an access token, which is then used to authorize all OroCommerce API requests during transfer operations.

Integration Flow

The integration processes iPaaS.com Kit Product records as follows:

  1. A product is created or updated in iPaaS.com with TrackingMethod = "Product" and at least one valid kit component.

  2. The mapping filter validates that the product qualifies as a Kit product.

  3. Kit component SKUs are validated against existing OroCommerce products during preprocessing.

  4. iPaaS.com authenticates with OroCommerce using OAuth 2.0.

  5. Required relationship entities (Organization, Owner, Attribute Family, and others) are resolved through dynamic lookups.

  6. Product attributes are mapped (SKU, Status, ProductType = "kit", Featured, New Arrival, Kit Shipping Calculation Method).

  7. Related entities (Names, Descriptions, Shipping Options, and others) are prepared for the included object.

  8. The kit product is created or updated through the OroCommerce Product API.

  9. For each kit component with a valid SKU in OroCommerce, a Kit Item is created with label grouping, and a Kit Item Product is associated with the existing OroCommerce product.

  10. If default pricing mappings are provided, pricing validation and creation occur.

  11. The OroCommerce Product ID is saved as the External ID in iPaaS.com.

  12. Transfer status and any errors are logged in iPaaS.com.

Mappings

Parent: Add OroCommerce Kit Product FROM iPaaS.com

Mapping Filter

if (TrackingMethod == "Product" && Kit?.Components?.Count > 0)
{
    return true;
}
return false;

Filter Description. This filter ensures that only kit products eligible for creation in OroCommerce are processed. It validates that the product's TrackingMethod is set to "Product" and that the product contains one or more kit components. Records that do not meet both conditions are skipped by this collection.

Description

This mapping collection handles the creation of standalone OroCommerce Kit products from iPaaS.com data. It applies only to products where TrackingMethod = Product that include a kit with at least one valid kit component. The mapping ensures that kit items, organizational structure, product units, tax code, related financial attributes, and other data are correctly associated, maintaining consistent records within OroCommerce. Relationship fields are included in the included object only when they are mapped.

Mapping Type

Source Field (iPaaS.com)

Destination Field (OroCommerce)

Description

Static

products

Type

(Required) Specifies the record type.

Field

Sku

Attributes_Sku

(Required) Maps the product SKU from iPaaS.com to OroCommerce.

Dynamic Formula

if(Status == "Active" || Status == "Preorder") return "enabled"; else return "disabled";

Attributes_Status

(Required) Maps product status. OroCommerce supports only enabled or disabled. Active and Preorder are mapped to enabled; all other statuses are mapped to disabled.

Static

kit

Attributes_ProductType

(Required) Sets the product type to "kit" for kit products.

Static

true

Attributes_Featured

(Optional) Specifies whether the product is featured. Set to true or false.

Static

true

Attributes_NewArrival

(Optional) Specifies whether the product is a new arrival. Set to true or false.

Static

kit_shipping_all

Attributes_KitShippingCalculationMethod

(Optional) Specifies how to calculate the fixed shipping price for the product kit. Available values: kit_shipping_all, kit_shipping_product, kit_shipping_items.

Dynamic Formula

return await GetBusinessUnitIdByNameAsync("Acme, General");

Relationships_Owner_Id

Resolves the business unit (owner) ID from the business unit name. Placeholder value — replace during implementation: substitute your own OroCommerce business unit name for "Acme, General".

Static

businessunits

Relationships_Owner_Type

(Required when Relationships_Owner_Id is mapped) Specifies the owner relationship type. The owner is not assigned unless this type is set.

Dynamic Formula

return await GetOrganizationIdByNameAsync("iPaaS.com");

Relationships_Organization_Id

Resolves the organization ID from the organization name. Placeholder value — replace during implementation: substitute your own OroCommerce organization name for "iPaaS.com".

Static

organizations

Relationships_Organization_Type

(Required when Relationships_Organization_Id is mapped) Specifies the organization relationship type. The organization is not assigned unless this type is set.

Dynamic Formula

return await GetAttributeFamilyIdByCodeAsync("default_family_custom");

Relationships_AttributeFamily_Id

(Required) Resolves the attribute family ID from the attribute family code. Placeholder value — replace during implementation: substitute your own OroCommerce attribute family code for "default_family_custom".

Static

attributefamilies

Relationships_AttributeFamily_Type

(Required) Specifies the attribute family relationship type.

Lookup Translation

Product Inventory Status From iPaaS.com

Relationships_InventoryStatus_Id

(Required) Maps the inventory status using the lookup translation table.

Static

prodinventorystatuses

Relationships_InventoryStatus_Type

(Required) Specifies the inventory status relationship type.

Dynamic Formula

return new List<string> { Name };

Relationships_Names_Ids

(Required) Provides one or more localized product names with default localization. At least one name must always be provided.

Static

productnames

Relationships_Names_Type

(Required) Specifies the names relationship type.

Dynamic Formula

if(!string.IsNullOrWhiteSpace(Unit)) { string unitId = await GetProductUnitIdByLabelAsync(Unit); if(!string.IsNullOrWhiteSpace(unitId)) return unitId; } return "each";

Relationships_PrimaryUnitPrecision_Id

(Required) Resolves the product unit by label; defaults to each if the unit is missing or cannot be matched.

Static

productunitprecisions

Relationships_PrimaryUnitPrecision_Type

(Required) Specifies the primary unit precision relationship type.

Static

0

Relationships_PrimaryUnitPrecision_Precision

(Required) Sets the decimal precision for the primary unit.

Static

true

Relationships_PrimaryUnitPrecision_Sell

(Required) Specifies whether the product is sellable. Set to true for sellable products and false for non-sellable products.

Dynamic Formula

return new List<string> { Description };

Relationships_Descriptions_Ids

(Optional) Provides one or more localized product descriptions with default localization. Including a single item is recommended.

Static

productdescriptions

Relationships_Descriptions_Type

(Required when Relationships_Descriptions_Ids is mapped) Specifies the description relationship type. The description is not assigned unless this type is set.

Dynamic Formula

return new List<string> { Description };

Relationships_ShortDescriptions_Ids

(Optional) Provides one or more localized product short descriptions with default localization. Including a single item is recommended.

Static

productshortdescriptions

Relationships_ShortDescriptions_Type

(Required when Relationships_ShortDescriptions_Ids is mapped) Specifies the short description relationship type. The short description is not assigned unless this type is set.

Static

productshippingoptions

Relationships_ProductShippingOptions_Type

(Required when any shipping-option data is provided) Specifies the product shipping options type. This type, together with the Primary Unit Precision ID, must be set or the shipping options are not applied, even when individual values are mapped to the weight unit, weight value, dimension unit, dimension length, dimension width, dimension height, and primary unit precision fields.

Dynamic Formula

return await GetWeightUnitIdByShortCodeAsync("kg");

Relationships_ProductShippingOptions_WeightUnit

(Required when Relationships_ProductShippingOptions_WeightValue is mapped) Resolves the OroCommerce weight unit ID by short code; returns null if no match is found. The weight value is not assigned unless this unit is set. Example values: lbs (pounds), kg (kilograms). Placeholder value — replace during implementation: substitute the weight unit short code your OroCommerce store uses for "kg".

Field

Weight

Relationships_ProductShippingOptions_WeightValue

(Optional) Maps the product weight to the OroCommerce shipping option weight.

Dynamic Formula

return await GetLengthUnitIdByShortCodeAsync("m");

Relationships_ProductShippingOptions_DimensionUnit

(Required when any dimension value is mapped) Resolves the OroCommerce dimension unit ID by short code; returns null if no match is found. The dimension values (length, height, width) are not assigned unless this unit is set. Placeholder value — replace during implementation: substitute the dimension unit short code your OroCommerce store uses for "m".

Field

Depth

Relationships_ProductShippingOptions_DimensionLength

(Optional) Maps the product depth to the OroCommerce shipping option length.

Field

Width

Relationships_ProductShippingOptions_DimensionWidth

(Optional) Maps the product width to the OroCommerce shipping option width.

Field

Height

Relationships_ProductShippingOptions_DimensionHeight

(Optional) Maps the product height to the OroCommerce shipping option height.

Dynamic Formula

return await GetProductTaxCodeIdByTaxCodeAsync("TAXABLE_ITEMS");

Relationships_TaxCode_Id

Resolves the product tax code ID from the tax code. Placeholder value — replace during implementation: substitute your own OroCommerce product tax code for "TAXABLE_ITEMS".

Static

producttaxcodes

Relationships_TaxCode_Type

(Required when Relationships_TaxCode_Id is mapped) Specifies the tax code relationship type. The tax code is not assigned unless this type is set.

Dynamic Formula

return await GetProductBrandIdByNameAsync("Default ltd.");

Relationships_Brand_Id

(Optional) Resolves the OroCommerce product brand ID by name; returns null if no match is found. Placeholder value — replace during implementation: substitute your own OroCommerce brand name for "Default ltd.".

Static

brands

Relationships_Brand_Type

(Required when Relationships_Brand_Id is mapped) Specifies the brand relationship type. The brand is not assigned unless this type is set.

Dynamic Formula

if(Categories?.Count > 0) return await GetCatalogCategoryIdByTitleAsync(Categories.LastOrDefault().CategoryName);

Relationships_Category_Id

(Optional) Resolves the OroCommerce catalog category ID by title, using the last category in the iPaaS.com Categories collection; returns null if no match is found.

Static

categories

Relationships_Category_Type

(Required when Relationships_Category_Id is mapped) Specifies the category relationship type. The category is not assigned unless this type is set.

Static

systemConfig

Relationships_PageTemplate_Id

(Optional) Sets the fallback Page Template style used to display the product in the storefront.

Static

entityfieldfallbackvalues

Relationships_PageTemplate_Type

(Required when Relationships_PageTemplate_Id is mapped) Specifies the page template relationship type. The page template is not assigned unless this type is set.

Static

1

Relationships_ManageInventory_ScalarValue

(Optional) Sets the manage-inventory scalar value, where 1 means "On order submission in the default checkout flow" and 0 means "No (custom)". Defines whether inventory is managed for the product.

Static

entityfieldfallbackvalues

Relationships_ManageInventory_Type

(Required when Relationships_ManageInventory_Id is mapped) Specifies the manage inventory relationship type. The manage inventory flag is not assigned unless this type is set.

Static

1

Relationships_DecrementQuantity_ScalarValue

(Optional) Sets the decrement-quantity scalar value, where 1 means Yes and 0 means No. Defines the strategy used for decrementing inventory on ordered products.

Static

entityfieldfallbackvalues

Relationships_DecrementQuantity_Type

(Required when Relationships_DecrementQuantity_Id is mapped) Specifies the decrement quantity relationship type. The decrement quantity flag is not assigned unless this type is set.

Static

0

Relationships_BackOrder_ScalarValue

(Optional) Sets the backorder scalar value, where 1 means Yes and 0 means No. The backorder flag controls whether a product can be ordered while out of stock or low on inventory; such orders ship once the product is restocked.

Static

entityfieldfallbackvalues

Relationships_BackOrder_Type

(Required when Relationships_BackOrder_Id is mapped) Specifies the backorder relationship type. The backorder flag is not assigned unless this type is set.

Dynamic Formula

// Normalize iPaaS product's name to meet Oro Commerce URL-safe requirements
string normalizedSlug = Regex.Replace(Name, @"[^a-zA-Z0-9\-._~]", "_");
return new List<string> { normalizedSlug };

Relationships_SlugPrototypes_Ids

(Optional) Generates a URL-safe slug from the product name, keeping only Latin letters, digits, and the symbols hyphen, period, underscore, and tilde, and replacing any other character with an underscore. Returned as a localized list.

Static

localizedfallbackvalues

Relationships_SlugPrototypes_Type

(Required when Relationships_SlugPrototypes_Ids is mapped) Specifies the slug prototype relationship type. The slug prototype is not assigned unless this type is set.

Dynamic Formula

return new List<string> { "Meta Title: " + Name }

Relationships_MetaTitles_Ids

(Optional) Provides one or more localized meta titles used for SEO, with default localization. Including a single item is recommended.

Static

localizedfallbackvalues

Relationships_MetaTitles_Type

(Required when Relationships_MetaTitles_Ids is mapped) Specifies the meta title relationship type. The meta title is not assigned unless this type is set.

Dynamic Formula

return new List<string> { "Meta Desc: " + Description }

Relationships_MetaDescriptions_Ids

(Optional) Provides one or more localized meta descriptions used for SEO, with default localization. Including a single item is recommended.

Static

localizedfallbackvalues

Relationships_MetaDescriptions_Type

(Required when Relationships_MetaDescriptions_Ids is mapped) Specifies the meta description relationship type. The meta description is not assigned unless this type is set.

Dynamic Formula

return new List<string> { "Meta Keyword: " + TrackingMethod + " " + Name.Split()[0] }

Relationships_MetaKeywords_Ids

(Optional) Provides one or more localized meta keywords used for SEO, with default localization. Including a single item is recommended.

Static

localizedfallbackvalues

Relationships_MetaKeywords_Type

(Required when Relationships_MetaKeywords_Ids is mapped) Specifies the meta keyword relationship type. The meta keyword is not assigned unless this type is set.

Static

productprices

DefaultPricing_Type

(Required for default pricing) Required when default pricing is configured for the product.

Static

USD

DefaultPricing_Attributes_Currency

(Required for default pricing) Maps a valid currency code for the product's default pricing. Placeholder value — replace during implementation: substitute the currency code your OroCommerce store uses for "USD".

Static

1

DefaultPricing_Attributes_Quantity

(Required for default pricing) Sets the default-pricing quantity. Required when default pricing is configured.

Field

DefaultPrice

DefaultPricing_Attributes_Value

(Required for default pricing) Maps the default price value.

Field

SalePrice

DefaultPricing_SalePrice

(Recommended) Maps the product sale price from iPaaS.com to the default price list entry in OroCommerce. Used to set the product's price when default pricing is configured. Leave unmapped if prices are managed exclusively through the Bulk Price flow.

Dynamic Formula

string priceListId = await GetPriceListIdByNameAsync("Default Price List");
if(!string.IsNullOrWhiteSpace(priceListId)) return priceListId;
throw new Exception("Product can not be created because incorrect price list name is provided through mappings for the default pricing creation");

DefaultPricing_Relationships_PriceList_Id

(Required for default pricing) Resolves the OroCommerce Price List ID from the configured Price List name. If no matching Price List exists, the product cannot be created and the process raises an error, ensuring default pricing is always tied to a valid Price List. Placeholder value — replace during implementation: substitute your own OroCommerce Price List name for "Default Price List".

Static

pricelists

DefaultPricing_Relationships_PriceList_Type

(Required for default pricing) Required when default pricing is configured for the product.

Dynamic Formula

if(!string.IsNullOrWhiteSpace(Unit)) { string unitId = await GetProductUnitIdByLabelAsync(Unit); if(!string.IsNullOrWhiteSpace(unitId)) return unitId; } return "each";

DefaultPricing_Relationships_Unit_Id

(Required for default pricing) Resolves the product unit by label; defaults to each if the unit is missing or cannot be matched.

Static

productunits

DefaultPricing_Relationships_Unit_Type

(Required for default pricing) Required when default pricing is configured for the product.

Parent: Update OroCommerce Kit Product FROM iPaaS.com

Mapping Filter

if (TrackingMethod == "Product" && Kit?.Components?.Count > 0)
{
   return true;
}
return false;

Filter Description. This filter behaves identically to the Add collection: only products with TrackingMethod set to "Product" that contain one or more kit components are processed.

Description

This mapping collection updates existing OroCommerce Kit products from iPaaS.com data. Its field set is identical to the Add OroCommerce Kit Product collection documented above, including the same source fields, destination fields, formulas, and static values. There is one difference: the default-pricing Price List resolution formula raises an update-specific message when the Price List name cannot be matched.

Mapping Type

Source Field (iPaaS.com)

Destination Field (OroCommerce)

Description

Dynamic Formula

string priceListId = await GetPriceListIdByNameAsync("Default Price List");
if(!string.IsNullOrWhiteSpace(priceListId)) return priceListId;
throw new Exception("Product can not be updated because incorrect price list name is provided through mappings for the default pricing update");

DefaultPricing_Relationships_PriceList_Id

(Required for default pricing) Resolves the OroCommerce Price List ID from the configured Price List name. If no matching Price List exists, the product cannot be updated and the process raises an error, ensuring default pricing is always tied to a valid Price List. Placeholder value — replace during implementation: substitute your own OroCommerce Price List name for "Default Price List".

All other mappings in this collection match the Add OroCommerce Kit Product collection above.

Child: Add OroCommerce Kit Item FROM iPaaS.com

Mapping Filter

No mapping filter is applied to this collection.

Description

This collection creates Kit Items in OroCommerce based on iPaaS.com Kit and Kit Component data. It serves as a base mapping, exposing only the mandatory field required by OroCommerce to create a Kit Item, while deferring the kit item products and extended mappings to the downstream Kit Item Product collection.

Mapping Type

Source Field (iPaaS.com)

Destination Field (OroCommerce)

Description

Static

productkititems

Type

(Required) Specifies the kit item record type.

Child: Update OroCommerce Kit Item FROM iPaaS.com

Mapping Filter

No mapping filter is applied to this collection.

Description

This collection updates Kit Items in OroCommerce during a product update. Its field set is identical to the Add OroCommerce Kit Item collection above.

Mapping Type

Source Field (iPaaS.com)

Destination Field (OroCommerce)

Description

Static

productkititems

Type

(Required) Specifies the kit item record type.

Child: Add OroCommerce Kit Item Product FROM iPaaS.com

Mapping Filter

string productId = await GetProductIdBySkuAsync(Sku);
if (!string.IsNullOrWhiteSpace(productId))
    return true;
return false;

Filter Description. This filter validates whether a product already exists in OroCommerce by looking up a Product ID from the SKU. If a Product ID is found, the filter evaluates to true; otherwise, it evaluates to false. This ensures that only kit components whose products already exist in OroCommerce are included when creating Kit Item Products under a Kit Item.

Description

This collection groups kit components by label and assigns existing OroCommerce products to Kit Items by creating Kit Item Products in a child transfer. It applies only to kit component SKUs that already exist in OroCommerce. The mapping ensures that kit items are grouped correctly by label and that products are associated within their respective kit items.

Mapping Type

Source Field (iPaaS.com)

Destination Field (OroCommerce)

Description

Field

Type

CustomProductKitItem

Provided as an example of how custom fields are supported in the integration. For more detail, see the Custom Field Support section.

Field

Quantity

Attributes_MaximumQuantity

Limits the quantity of this kit item a customer may purchase as part of the kit.

Field

Quantity

Attributes_MinimumQuantity

Limits the quantity of this kit item a customer may purchase as part of the kit.

Static

false

Attributes_Optional

(Optional) Indicates whether this kit item is required for purchase or can be skipped by the customer.

Dynamic Formula

string labelId = null;
string kitLabel = GetCustomFieldValue(CustomFields, "Kit Label");
if(!string.IsNullOrWhiteSpace(kitLabel)) labelId = kitLabel; else labelId = Parent.Type;
string productId = await GetProductIdBySkuAsync(Sku);
string productUnitId = await GetOroCommerceProductUnitIdByProductIdAsync(productId);
if (!string.IsNullOrWhiteSpace(productUnitId)) labelId += " " + productUnitId;
labelId += " " + Quantity;
return labelId;

Relationships_Label_Id

(Required) Generates the kit item label used to group iPaaS.com kit components into separate Kit Items in OroCommerce. The label uses the Kit Label custom field when present, or falls back to the parent product type (for example Basic, Add-on, or Bill of Material). To keep components that differ by quantity or unit of measure in distinct groups, the final label combines the resolved label, the component's product unit, and the component quantity.

Static

productkititemlabels

Relationships_Label_Type

(Required) Specifies the kit item label relationship type.

Dynamic Formula

return await GetProductIdBySkuAsync(Sku);

Relationships_kitItemProducts_Id

(Required) Resolves the OroCommerce product ID from the product SKU, used to assign the product to the kit item.

Static

productkititemproducts

Relationships_kitItemProducts_Type

(Required) Specifies the kit item product relationship type.

Child: Update OroCommerce Kit Item Product FROM iPaaS.com

Mapping Filter

string productId = await GetProductIdBySkuAsync(Sku);
if (!string.IsNullOrWhiteSpace(productId))
    return true;
return false;

Filter Description. This filter behaves identically to the Add Kit Item Product collection: only kit components whose products already exist in OroCommerce are included.

Description

This collection updates Kit Item Products in OroCommerce during a product update. Its field set is identical to the Add OroCommerce Kit Item Product collection above.

Mapping Type

Source Field (iPaaS.com)

Destination Field (OroCommerce)

Description

Field

Type

CustomProductKitItem

Provided as an example of how custom fields are supported in the integration. For more detail, see the Custom Field Support section.

Field

Quantity

Attributes_MaximumQuantity

Limits the quantity of this kit item a customer may purchase as part of the kit.

Field

Quantity

Attributes_MinimumQuantity

Limits the quantity of this kit item a customer may purchase as part of the kit.

Static

false

Attributes_Optional

(Optional) Indicates whether this kit item is required for purchase or can be skipped by the customer.

Dynamic Formula

string labelId = null;
string kitLabel = GetCustomFieldValue(CustomFields, "Kit Label");
if(!string.IsNullOrWhiteSpace(kitLabel)) labelId = kitLabel; else labelId = Parent.Type;
string productId = await GetProductIdBySkuAsync(Sku);
string productUnitId = await GetOroCommerceProductUnitIdByProductIdAsync(productId);
if (!string.IsNullOrWhiteSpace(productUnitId)) labelId += " " + productUnitId;
labelId += " " + Quantity;
return labelId;

Relationships_Label_Id

(Required) Generates the kit item label used to group iPaaS.com kit components into separate Kit Items in OroCommerce. The label uses the Kit Label custom field when present, or falls back to the parent product type (for example Basic, Add-on, or Bill of Material). To keep components that differ by quantity or unit of measure in distinct groups, the final label combines the resolved label, the component's product unit, and the component quantity.

Static

productkititemlabels

Relationships_Label_Type

(Required) Specifies the kit item label relationship type.

Dynamic Formula

return await GetProductIdBySkuAsync(Sku);

Relationships_kitItemProducts_Id

(Required) Resolves the OroCommerce product ID from the product SKU, used to assign the product to the kit item.

Static

productkititemproducts

Relationships_kitItemProducts_Type

(Required) Specifies the kit item product relationship type.

Error Handling

  • Duplicate SKU — Occurs when creating a product in OroCommerce with a SKU that already exists. Enable collision handling in the mapping collection through the subscription settings to control update-versus-create behavior.

  • No valid kit components — Occurs when creating a kit product without any valid kit components (components whose SKUs exist in OroCommerce). Ensure that at least one kit component has a SKU that already exists in OroCommerce before creating the kit product.

  • Missing required relationship type — A relationship Id was mapped without its corresponding Type field. Ensure both the Id and Type fields are mapped for every relationship (for example, Relationships_Owner_Id and Relationships_Owner_Type).

  • Product can not be created because incorrect price list name is provided through mappings for the default pricing creation — The Price List name in the default-pricing mapping does not exist in OroCommerce. Verify that the Price List name exists in OroCommerce and update the mapping accordingly.

  • Kit component product not found — A kit component's SKU does not exist in OroCommerce. Ensure the kit component product is transferred to OroCommerce before creating the kit product.

Validation Rules

  • Relationship Type validation — Relationship Id fields are included in the request only when their corresponding Type field is also mapped. If the Type field is not provided, the Id field is not used. This pattern applies to all relationship fields.

  • Kit component validation — iPaaS.com kit components are validated and included in the request only if their SKUs already exist in OroCommerce. The kit must contain at least one valid component before a Kit product can be created.

Testing & Validation

Test Scenarios

  1. Create Kit Product — Sync a new product from iPaaS.com with TrackingMethod = "Product" and at least one valid kit component. The kit product should be created in OroCommerce with its associated Kit Items, and the OroCommerce Product ID should be saved as the External ID in iPaaS.com.

  2. Update Existing Kit Product — Update an existing kit product in iPaaS.com. Changes should be reflected in OroCommerce without creating duplicates, and Kit Items should be deleted and recreated.

  3. Kit Component SKU Validation — Create a kit product where some component SKUs do not exist in OroCommerce. Only components with valid SKUs should be included in the kit.

  4. Kit Label Grouping — Create a kit product with multiple components. Components sharing the same Kit Label custom field value should be grouped under the same Kit Item.

  5. No Valid Components (Failure Case) — Attempt to create a kit product where no component SKUs exist in OroCommerce. The transfer should fail with an appropriate error message.

Validation Checklist

  • All mandatory product fields are mapped (Type, Attributes_Sku, Attributes_Status, Attributes_ProductType).

  • All required relationship fields have both the Id and Type mapped.

  • Referenced entities exist in OroCommerce (Organization, Owner, Attribute Family, Inventory Status, and others).

  • At least one kit component has a SKU that exists in OroCommerce.

  • Kit Item mandatory fields are mapped (Type, Relationships_Label_Id, Relationships_Label_Type, Relationships_kitItemProducts_Id, Relationships_kitItemProducts_Type).

  • Custom fields exist in OroCommerce with matching names and types.

  • A Price List exists for default-pricing operations.

  • A product unit exists, or the mapping defaults to "each".

  • Collision handling is configured if SKU conflicts are possible.

  • All placeholder values in dynamic formulas have been replaced with the subscriber's own OroCommerce values (business unit, organization, attribute family code, tax code, brand, weight and dimension units, currency, and Price List name).

Additional Notes

  • Dynamic formulas must return valid output; null or invalid returns may cause transfer failures.

  • The mapping filter requires TrackingMethod = "Product" and at least one kit component; products without components are handled by the Simple Product mapping collections.

  • Relationship Type fields are always required when mapping relationship Ids.

  • Kit Item records are deleted and recreated on every update to ensure consistency.

  • Kit components are grouped by the Kit Label custom field; if it is not set, the Kit Type is used as the grouping label.

  • Only kit components with SKUs that exist in OroCommerce are included in kit creation.

  • The Kit Shipping Calculation Method attribute accepts kit_shipping_all, kit_shipping_product, or kit_shipping_items.

  • Custom field names in iPaaS.com must exactly match the OroCommerce field names.

  • Contact your OroCommerce administrator before updating entity schemas to prevent service downtime.

  • It is recommended to include only one item in localized lists (Names, Descriptions, Meta Titles, and so on) unless multiple localizations are required.

Related Documents

Did this answer your question?