Skip to main content

OroCommerce Price Lists From iPaaS.com Mapping Documentation

OroCommerce Price Lists From iPaaS.com Mapping Documentation

This integration transfers iPaaS.com Bulk Pricing records to OroCommerce as Price Lists with their associated Product Prices. When a bulk pricing record is created or updated in iPaaS.com, the corresponding Price List and Product Prices are synchronized to OroCommerce, along with any customer group assignments derived from the bulk price's Applies To associations. The flow is triggered on Create and Update events for the iPaaS.com Bulk Price entity and keeps OroCommerce pricing aligned with the pricing defined in iPaaS.com.

Before You Begin

Ensure the following access prerequisites are in place before configuring this integration. Additional system-level requirements are detailed under System Caveats and Setup Requirements.

iPaaS.com Requirements

  • Access to iPaaS.com with permissions to create and update Bulk Pricing records.

OroCommerce Requirements

  • A valid OroCommerce account with administrator access.

ID Format

When manually transferring a bulk price from iPaaS.com, enter the valid iPaaS.com Bulk Price internal ID into the input field on the iPaaS.com manual sync page.

  • Example: 145146

External ID Format

The iPaaS.com Bulk Price External ID is a composite value that stores the OroCommerce Price List ID, the Product Price ID, and the associated Price List Customer Group IDs together as a single External ID, in the form <PriceListId>|<ProductPriceId>|<CustomerGroupIds...>.

  • Example: 36|77159a94-a283-4988-91cc-fa843561d1a3-36|57|58|59

In this example:

  • 36 is the OroCommerce Price List ID.

  • 77159a94-a283-4988-91cc-fa843561d1a3-36 is the Product Price ID.

  • 57, 58, 59 are the associated Price List Customer Group IDs.

Deleted Record Support

This integration supports the removal of Product Prices in OroCommerce when a bulk price is deleted in iPaaS.com, ensuring that stale prices are not left behind. The dedicated Delete OroCommerce Product Prices FROM iPaaS.com collection runs on the Delete trigger for the Bulk Price entity. It operates on the price record identified by its stored External ID and carries no field mappings of its own.

The delete mapping ships in the integration templates by default. To disable this behavior, remove the Delete OroCommerce Product Prices FROM iPaaS.com mapping collection. With the delete mapping in place, price additions, changes, and removals all stay synchronized between iPaaS.com and OroCommerce.

Custom Field Support

This integration supports custom fields for both OroCommerce Price Lists and Product Prices. For Price List custom fields, the OroCommerce custom field module must be Price List. For Product Price custom fields, the module must be Product Price.

Creating Custom Fields in OroCommerce

  1. In OroCommerce, go to System → Entities → Entity Management.

  2. Locate and select the module (entity) where you want to add the custom field, either Price List or Product Price.

  3. Click Create Field and configure the required fields.

    • 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 and do not require a manual schema update. Serialized Field is recommended to avoid manual schema updates.

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

  4. After creating a field with the Table Column storage type, a red Update Schema button appears on the page. Click Update Schema to apply the changes. Contact your OroCommerce administrator before updating an entity schema to prevent unexpected service downtime.

Creating Custom Fields in iPaaS.com

  1. In iPaaS.com, go to the OroCommerce subscription and open Custom Fields.

  2. Create the custom field using the exact Field Name and Type defined in OroCommerce, select the Bulk Pricing module, and click Save. Subscription custom fields are also known as External System Custom Fields.

  3. Open the relevant mapping collection and add a new mapping by selecting the desired destination custom field. Configure the source based on the custom field's requirements.

Mapping Collection Status

  • Status: Enabled

  • Trigger Events: Create, Update

The parent and child collections apply a mapping filter that limits which iPaaS.com records are processed. See the Mapping Filter subsection under each collection for the records that pass or are skipped.

Duplicate or Conflicting Mappings

This flow is the only mapping that targets the OroCommerce Price List and Product Price entities from iPaaS.com Bulk Pricing. Ensure no other mappings target the same OroCommerce Price List entity, so that pricing data is not overwritten by a competing flow. The related collections that participate in this flow are:

  1. Add/Update OroCommerce Price Lists FROM iPaaS.com (parent) — creates and updates Price Lists and their Product Prices.

  2. Add/Update OroCommerce Price Lists Customer Groups FROM iPaaS.com (child) — assigns customer groups to the Price List.

  3. Delete OroCommerce Product Prices FROM iPaaS.com — removes Product Prices when the bulk price is deleted in iPaaS.com.

Supported Child Collections

This parent mapping collection has one child collection, which assigns customer groups to the Price List. All other attributes and relationships are handled within the parent collection's flat-to-nested transformation.

  1. Parent: Add/Update OroCommerce Price Lists FROM iPaaS.com

  2. Child: Add/Update OroCommerce Price Lists Customer Groups FROM iPaaS.com

System Caveats

OroCommerce Caveats

  • Price list names must be unique. OroCommerce does not allow duplicate Price List names.

  • A single pricing unit is supported. Only one unit is used for pricing, and iPaaS.com unit fields are ignored. If iPaaS.com unit values are provided, they must match the configured default unit, or the price will not be applied.

  • Product Prices must reference a complete set of values. Each Product Price requires a Price List, unit, currency, product or variant, quantity, and value.

  • The product or variant must exist before pricing. OroCommerce does not allow Product Prices to be created unless the related product or variant already exists. The mapping resolves the OroCommerce Product ID first and does not create the price if the product is missing.

  • Currencies must be predefined on the Price List. OroCommerce requires currencies to be defined at the Price List level before prices can be added, and at least one valid currency must be present. The mapping always sets the Price List currencies.

  • A valid product unit is required for Product Prices. OroCommerce Product Prices cannot be created without a valid product unit (for example, item or each). The mapping resolves the unit from the product, and pricing does not complete if no unit exists.

  • Customer groups must exist before assignment. OroCommerce does not allow Price List Customer Groups to be created unless the related customer group already exists.

  • Customer group assignments are removed manually. Because OroCommerce Price Lists are global, customer groups must be removed from Price Lists manually in OroCommerce.

  • Custom fields require schema configuration. Custom fields require entity schema configuration in OroCommerce. The Serialized Field storage type is recommended to avoid manual schema updates.

iPaaS.com Caveats

  • Bulk Pricing depends on existing products. Bulk Pricing records require valid product External IDs. If the referenced product does not already exist in OroCommerce, the transfer does not complete unless the Auto Create Product preset is enabled to automatically create and transfer the product.

  • Customer group assignment depends on existing customer groups. Customer Category External IDs must exist and be correctly mapped to OroCommerce Customer Groups. If the customer group does not exist, the transfer does not complete unless the Auto Create Customer Group preset is enabled to automatically create and transfer the customer group.

  • Relationship fields resolve dynamically. Relationship fields such as Organization are resolved dynamically by the integration using lookups or helper functions, based on the entity's name, code, or other mappable fields. The referenced entity must exist beforehand to be resolved.

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

  • Partial failures are possible. All exceptions are logged. A partial failure during transfer can leave a Price List partially synced. Review the transfer logs and re-run the transfer to bring the Price List back into a consistent state.

Setup Requirements

  • OroCommerce: The organization, products or variants, customer groups, currencies, and product units referenced by the pricing data must exist before transfer (or the corresponding Auto Create presets must be enabled). Custom fields must be created and, where Table Column storage is used, the schema must be updated.

  • iPaaS.com: The OroCommerce subscription must be configured with valid credentials, and any custom fields used in the mappings must be defined on the Bulk Pricing module.

  • Authentication: OroCommerce uses OAuth 2.0 to generate an access token, which authorizes all OroCommerce API requests during transfer operations. Store credentials securely within the iPaaS.com credential manager.

Authentication and Security

OroCommerce uses OAuth 2.0 (Authorization Code) to generate an access token that authorizes all OroCommerce API requests during transfer operations. Credentials are stored securely within the iPaaS.com credential manager.

Integration Flow

The integration processes iPaaS.com Bulk Pricing records as follows:

  1. The integration is triggered when a bulk pricing record is created or updated in iPaaS.com.

  2. The mapping filter validates that the record relates to a product or product variant.

  3. Price List details are mapped and validated against OroCommerce requirements.

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

  5. The OroCommerce Product or Variant ID and Product Unit ID are resolved dynamically for each Product Price.

  6. If customer categories are assigned through the Applies To association, the integration verifies they have been transferred to OroCommerce.

  7. Products and customer groups are verified, or auto-created if the corresponding presets are enabled.

  8. The Price List, its Product Prices, and associated Customer Groups are created or updated in OroCommerce.

  9. Associated customer group assignments are processed through the child collection.

  10. Upon successful transfer, the OroCommerce ID is saved as the External ID in iPaaS.com.

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

Mappings

Parent: Add/Update OroCommerce Price Lists FROM iPaaS.com

Mapping Filter

TableId == 1 || TableId == 4

Filter Description. This filter controls when a Price List is created or processed. It allows the mapping to run only for records related to products or product variants (TableId 1 or TableId 4). Records that do not belong to these table types are skipped.

This mapping collection handles the creation and update of OroCommerce Price Lists from iPaaS.com Bulk Pricing data, including the Product Prices contained in the Price List. All attributes and relationships are handled within this single flat-to-nested transformation, except for customer group assignment, which is handled by the child collection.

Mapping Type

Source Field (iPaaS.com)

Destination Field (OroCommerce)

Description

Dynamic Formula

return await GetExternalIdAsync(Id, "Bulk Price", SpaceportSystemId);

Id

(Required for update) Identifies the existing Price List to update by resolving its stored External ID.

Static

pricelists

PriceLists_Type

(Required) Specifies the price list record type.

Static

productprices

ProductPrices_Type

(Required) Specifies the product prices relationship type used to assign product prices to the price list.

Static

organizations

PriceLists_Relationships_Organization_Type

(Required) Specifies the organization relationship type used to assign an organization to the price list.

Static

1

Pricelists_Relationships_Organization_Id

(Required) Sets the OroCommerce organization ID that owns the price list. Placeholder value — replace during implementation: "1" is the default organization. Replace it with the organization ID of the target OroCommerce instance if it differs.

Static

true

PriceLists_Attributes_Active

(Recommended) Sets the OroCommerce price list to active so its prices are available to customers.

Dynamic Formula

if(BulkPrice < 10000)
{
return "Price List Less Than 10000";
}
else if (BulkPrice >= 10000 && BulkPrice < 20000) {
return "Price List Less Than 20000 and Greater than 10000";
}

PriceLists_Attributes_Name

(Required) Evaluates the BulkPrice value and returns a descriptive Price List name based on predefined price ranges. This condition can be adjusted to build the Price List name from different pricing ranges. Placeholder value — replace during implementation: the example names "Price List Less Than 10000" and "Price List Less Than 20000 and Greater than 10000", along with the under-10000 and 10000-to-20000 thresholds, are samples. Replace them with the Price List names and thresholds used in the target OroCommerce instance.

Dynamic Formula

return new List<string> { "USD", "EUR" };

PriceLists_Attributes_PriceListCurrencies

(Required) Defines the list of currencies supported on the Price List. Placeholder value — replace during implementation: "USD" and "EUR" are examples. Replace them with the currencies configured in the target OroCommerce instance.

Dynamic Formula

return await GetiPaaSCurrencyNameByIdAsync(CurrencyId);

ProductPrices_Attributes_Currency

(Required) Retrieves the currency name from iPaaS.com that corresponds to the given currency ID and maps it to the Product Price currency. If the input is invalid or no match exists, no value is returned.

Field

Quantity

ProductPrices_Attributes_Quantity

(Required) Maps the price-break quantity from iPaaS.com to the Product Price quantity in the OroCommerce price list, defining the minimum quantity at which the price applies.

Field

BulkPrice

ProductPrices_Attributes_Value

(Required) Maps the bulk price amount from iPaaS.com to the Product Price value in the OroCommerce price list.

Dynamic Formula

return await GetOroCommerceProductOrVariantIdAsync(InternalId, TableId);

ProductPrices_Relationships_Product_Id

(Required) Retrieves the OroCommerce Product or Variant ID that corresponds to the given product or variant. If a product exists, its OroCommerce ID is returned; otherwise the matching variant ID is used.

Dynamic Formula

object oroCommerceId = await GetExternalIdAsync(InternalId, "Product", SpaceportSystemId);


if(oroCommerceId == null)

{

oroCommerceId = await GetExternalIdAsync(InternalId, "Product Variant", SpaceportSystemId);

}

if(oroCommerceId != null) {
return await GetOroCommerceProductUnitIdByProductIdAsync(oroCommerceId.ToString());
}
return null;

ProductPrices_Relationships_Unit_Id

(Required) Resolves the OroCommerce Product ID for the given internal product ID, checking both Product and Product Variant. If a valid product is found, the associated Product Unit ID is fetched and returned. If the product does not exist, no value is returned.

Static

test22 value

test12 (custom field)

Writes the static value "test22 value" to the test12 custom field. Placeholder value — replace during implementation: this is a sample custom-field mapping. Remove it or replace it with a real custom field before using this collection in production.

Child: Add/Update OroCommerce Price Lists Customer Groups FROM iPaaS.com

Mapping Filter

TableId == 39

Filter Description. This filter ensures that only valid Customer Category associations from the bulk price's Applies To association are processed (TableId 39). Records that do not belong to this table type are skipped.

This mapping collection creates OroCommerce Price List Customer Groups from the iPaaS.com Bulk Pricing Applies To associations (customer group associations only). Before creating a Price List Customer Group, the mapping verifies that the Applies To association contains only valid Customer Category associations.

Mapping Type

Source Field (iPaaS.com)

Destination Field (OroCommerce)

Description

Static

pricelisttocustomergroups

Type

(Required) Specifies the price-list-to-customer-group record type.

Static

customergroups

Relationships_CustomerGroup_Type

(Required) Specifies the customer group relationship type used to assign a customer group to the price list.

Dynamic Formula

return await GetExternalIdAsync(InternalId, "Customer Category", SpaceportSystemId);

Relationships_CustomerGroup_Id

(Required) Resolves the OroCommerce Customer Group ID from the iPaaS.com Customer Category. The internal ID represents the category ID in iPaaS.com.

Static

1

Attributes_SortOrder

(Recommended) Sets the priority of this price list within the customer group's assigned price lists. Lower numbers take precedence.

Static

false

Attributes_MergeAllowed

(Recommended) Sets whether prices from this price list may be merged with other price lists assigned to the customer group. "false" keeps this price list's prices distinct.

Delete OroCommerce Product Prices FROM iPaaS.com

This mapping collection removes Product Prices in OroCommerce when the corresponding bulk price is deleted in iPaaS.com. It runs on the Delete trigger for the Bulk Price entity and operates on the price record identified by its stored External ID, so it carries no field mappings of its own. When a bulk price that was previously transferred to OroCommerce is deleted in iPaaS.com, the matching OroCommerce Product Price is removed from its price list. This collection ships in the integration templates by default; remove it to disable deletion. Use it together with the parent Add/Update OroCommerce Price Lists FROM iPaaS.com collection so that price additions, changes, and removals stay synchronized.

This collection has no field mappings.

Error Handling

  • Required field is missing. OroCommerce rejected a Bulk Pricing, Price List, or Product Price create or update request because one or more required fields were not populated. Ensure that the Price List Name, Product Price Value, Quantity, Currency, Product ID, and (where applicable) the Applies To customer groups are all populated.

  • Mapping not found. OroCommerce could not create or update the Product Price because the Product, Unit, or Currency mapping does not exist or is invalid. Verify that the product External ID exists in OroCommerce, the Product Unit mapping exists in OroCommerce, and the currency mapping exists and is valid.

  • Customer group not found. The Applies To customer category assigned to the Price List has not been transferred to OroCommerce. Transfer the Customer Category to OroCommerce before syncing the Price List, or enable Auto Create Customer Group.

  • Price List name already exists. OroCommerce does not allow duplicate Price List names, and the integration attempted to create a Price List with a name that already exists. Ensure Price List names are unique in iPaaS.com before syncing, or update the Bulk Pricing dynamic formula to generate a unique name.

  • External ID not found. The Bulk Pricing record cannot be mapped because the External ID is missing or invalid. Ensure the Bulk Pricing has a valid iPaaS.com External ID, or enable Auto Create Product to automatically create missing products before transfer.

  • Customer group mapping failed. One or more Applies To categories could not be mapped because their external IDs are missing or invalid. Ensure all customer categories referenced in the Applies To association exist in OroCommerce and that their external ID mappings are correct, or enable Auto Create Customer Group to automatically create missing categories before transfer.

  • Invalid or unsupported currency. The Price List currency value provided from iPaaS.com is invalid or does not exist in OroCommerce, so the request is rejected because the currency code cannot be matched. Verify that the currency code exists and is enabled in OroCommerce, and that the currency value mapped in iPaaS.com matches a valid ISO currency configured on the OroCommerce Price List.

  • Product reference missing or invalid. The product could not be linked because the required product identifier is missing or invalid. OroCommerce expects a valid product SKU, but the value is blank or the referenced product does not exist. Ensure the product SKU is present and correctly mapped in iPaaS.com, confirm the product already exists in OroCommerce before transferring related records, or enable Auto Create Product to create missing products prior to synchronization.

Validation Rules

Relationship Type Validation

Some fields are validated internally and become relevant only when their dependent fields are also mapped. For example, if a Pricelists_Relationships_Organization_Id field is mapped, the corresponding PriceLists_Relationships_Organization_Type must also be mapped to include that relationship in the payload. If the type field is not provided, the ID field is not used in the request. This pattern applies to all similar relationship fields.

Pricing Dependency Validation

The product or variant referenced by a Product Price must exist in OroCommerce, a valid product unit must be resolvable, and at least one valid currency must be defined on the Price List. If any of these prerequisites are not met, the Product Price is not created.

Testing and Validation

Test Scenarios

Scenario 1: Create or Update Bulk Pricing

Create or update a Bulk Pricing record in iPaaS.com with Price List and Product Price values, then sync to OroCommerce. Verify that the Price List and Product Prices are created with correct IDs, that External IDs are saved in iPaaS.com, and that changes are reflected without duplicates.

Scenario 2: Create or Update Customer Group Assignment

Update the Applies To association on a Bulk Pricing record in iPaaS.com and sync to OroCommerce. Verify that customer group assignments are reflected without duplicates.

Scenario 3: Missing Product External ID (Failure Case)

Create a Bulk Pricing record in iPaaS.com with a product that has no External ID mapping in OroCommerce and trigger the integration. If Auto Create Product is enabled, the product is created in OroCommerce and the transfer completes. If auto-create is disabled, the integration reports a missing product External ID error.

Scenario 4: Missing Customer Category (Failure Case)

Create a Bulk Pricing record with an Applies To category that has no mapping in OroCommerce and trigger the integration. If Auto Create Customer Group is enabled, the category is created and the transfer completes. If auto-create is disabled, the integration reports a category-not-found error.

Scenario 5: Invalid Currency or Unit Mapping (Failure Case)

Create or update Bulk Pricing with a Product Price referencing a currency or unit that is not mapped in OroCommerce and trigger the integration. The integration reports a currency or unit mapping error, and no incomplete or inconsistent Product Prices are created.

Scenario 6: Custom Field Transfer

Create a custom field in OroCommerce (Price List or Product Price) and a matching custom field in iPaaS.com with the same name and module. Assign a value in iPaaS.com Bulk Pricing and trigger the integration. Verify that custom field values are transferred correctly and stored using the appropriate storage type (Serialized or Table Column).

Scenario 7: Delete Bulk Price

Delete a previously transferred Bulk Pricing record in iPaaS.com. Verify that the corresponding Product Price is removed from its OroCommerce price list.

Validation Checklist

  • Bulk Pricing ID exists in iPaaS.com.

  • Price List name is unique.

  • Product exists in OroCommerce or auto-create is enabled.

  • Currency and unit mappings exist in OroCommerce.

  • Product Price quantity is present.

  • Product Price value is set.

  • Product Price currency mapping exists.

  • Product Price product mapping exists.

  • Customer group mapping exists.

  • Customer category exists in OroCommerce or auto-create is enabled.

Additional Notes

  • Customer groups must be removed from Price Lists manually in OroCommerce because Price Lists are global.

  • Only a single unit is supported for pricing; iPaaS.com unit fields are ignored.

  • The integration removes Product Prices in OroCommerce when a Bulk Price is deleted in iPaaS.com.

  • Custom field names must match exactly between OroCommerce and iPaaS.com.

  • The Serialized Field storage type is recommended for custom fields to avoid manual schema updates.

  • The Auto Create presets ensure that missing products and customer groups are created when enabled.

  • All exceptions are logged. A partial failure can leave a Price List partially synced; review the logs and re-run the transfer to restore a consistent state.

  • Ensure dynamic formulas return valid output; a null or invalid return can cause a transfer to not complete.

Related Documents

Did this answer your question?