Skip to main content

Akeneo Product To iPaaS Mapping Documentation

Updated yesterday

Summary

Akeneo products can be transferred to iPaaS.com through manual sync and polling. This integration supports the transfer of both simple and variant products, allowing for the creation and updating of single stocking units in iPaaS.com based on Akeneo product data.

The following Akeneo product types can be transferred to iPaaS.com:

  • Simple Product (Product)

  • Variant Product (Product Model)

Mapping Collection Status

  • Status: Enabled

  • Trigger Events: Create, Update of Product in Akeneo

Id Format

When performing manual transfers of Akeneo Simple Products or Variant Products in iPaaS.com, it is crucial to input the correct identifier in the iPaaS.com field on the Manual Sync page.

  • For Simple Products, use the Simple Product ID, for example, 8916f491-b423-4e01-899f-1ee8dfcffce4

  • For Variant Products, input the correct Product Code, for example, CorLiving Dillon Oblong Dining Table

Ensuring the accuracy of these identifiers is essential for a successful transfer.

Duplicate or Conflicting Collections

This mapping only applies to Product. To prevent data from being overwritten, make sure there are no other mappings targeting the same Akeneo entity.

Supported Child Collections

Parent Collection: Akeneo Product To iPaaS supports the following child collections:

  • Child 1: Product Unit

  • Child 2: Product Inventory

  • Child 3: Product Related Product

  • Child 4: Product Option

    • Product Option Value

  • Child 5: Product Kit

    • Product Kit Component

  • Child 6: Product Variant

    • Product Variant Inventory

    • Product Variant Option

    • Product Variant Related Product

Mappings

Parent Collection: Akeneo Product To iPaaS

Mapping Filter: No filter is available

Description Field Mappings: No Description is available

Field Mappings

Mapping Type

Source (Akeneo Templates Latest)

Destination (iPaaS.com)

Description

Field

Family

Family

Dynamic Formula

return await GetAssetAttributeValue(Values, "Product Media", null, null, null, true);

Akeneo Product Media

If the Akeneo product has an asset collection for “Product Media”, use:
return await GetAssetAttributeValue(Values, "Product Media"); → returns data1, href1 | data2, href2. To save only URLs in the custom field, use: return await GetAssetAttributeValue(Values, "Product Media", null, null, true); → returns href1,href2.

Dynamic Formula

return await GetAssetAttributeValue(Values, "Youtube videos", null, null, "youtube_code");

Youtube Videos

For "Youtube videos" asset attribute: Use
return await GetAssetAttributeValue(Values, "Youtube videos", null, null, "youtube_code"); → returns "value1, href1 | value2, href2 | value3, href3". To save only URLs in the custom field, use return await GetAssetAttributeValue(Values, "Youtube videos", null, null, "youtube_code", true); → returns "href1,href2".

Dynamic Formula

return await GetAssetAttributeValue(Values, "Vimeo Videos", null, null, "vimeocode", true);

Vimeo Videos

For "Vimeo Videos" asset attribute: Use
return await GetAssetAttributeValue(Values, "Vimeo Videos", null, null, "vimeocode", true); → returns only URLs as "href1,href2,href3". To save both video code & URL, use return await GetAssetAttributeValue(Values, "Vimeo Videos", null, null, "vimeocode"); → returns "value1,href1 | value2,href2".

Dynamic Formula

return await GetAssetAttributeValue(Values, "Product Media", null, "Ecommerce", null, true, true, true, null);

Akeneo Test Image With Alt Text and Position

For “Product Media” asset collection: return await GetAssetAttributeValue(Values, "Product Media"); → returns "data1,href1 | data2,href2". return await GetAssetAttributeValue(Values, "Product Media", null, null, true); → returns "href1,href2".

Dynamic Formula

var channelValueB2B = await GetValueFromProductValuesAsync(Values,"channel_visible",null,"b2b"); return channelValueB2B;

Channel Visible B2B

-

Field

testing_single_reference_for_product_partial_scopable_b2b1

testing_single_reference_for_product_partial_scopable_b2b1

-

Field

testing_single_reference_for_product_partial_scopable_b2b1

testing_single_reference_for_product_partial_scopable_b2b1

Field

testing_single_reference_for_product_scopable_ecommerce_fr_FR1

testing_single_reference_for_product_scopable_ecommerce_fr_FR1

Field

Collection1

testAkeneo

Dynamic Formula

//New Mapping on the basis of identifier var sku = GetValueFromProductValues(Values,"sku"); if(sku != null){ return sku; } else{ if(Uuid != null) return Uuid.ToUpper(); else return Identifier.ToUpper(); }

Sku

The SKU is a required field and must be mapped using this dynamic formula to ensure consistency

Dynamic Formula

var description = GetValueFromProductValues(Values,"description","en_US","print"); if(description != null){ return description; } else{ return Family; }

Description

This mapping utilizes a conversion function that returns a string value from the provided Values object (passed as the first parameter) based on the specified field name (provided as the second parameter). If the "description" exists, it is mapped to the Description field in iPaaS. Otherwise, the Product Family is mapped to the iPaaS Description field.

Static

Physical

Type

The Type Field in iPaaS is a required field

Dynamic Formula

var price = GetValueFromProductValues(Values,"price",null,null,null,"usd"); if(price != null){ return price; } else{ return "0"; }

DefaultPrice

The DefaultPrice is a required field and must be mapped using this dynamic formula This mapping utilizes a conversion function that returns a string value from the provided Values object (passed as the first parameter) based on the specified field name (provided as the second parameter).

Dynamic Formula

var name = GetValueFromProductValues(Values,"name","en_US"); if(name != null){ return name; } else{ var sku = GetValueFromProductValues(Values,"sku"); if(sku != null){ return sku; } else if(Uuid != null && !string.IsNullOrWhiteSpace(Uuid.ToString())){ return Uuid; } else{ return Identifier; } }

Name

The Name is a required field and must be mapped using this dynamic formula. It uses a function to retrieve the value for the "name" field in the en_US locale from the provided Values object

Dynamic Formula

var price = GetValueFromProductValues(Values,"price",null,null,null,"usd"); if(price != null){ return price; } else{ return "0"; }

SalePrice

This mapping utilizes a conversion function that returns a string value from the provided Values object (passed as the first parameter) based on the specified field name (provided as the second parameter). If the "price" exists, it is mapped to the SalePrice field in iPaaS. Otherwise, static value 0 is mapped to the iPaaS SalePrice.

Dynamic Formula

var UUIdOrIdentifier=(Uuid != null ? Uuid : Identifier); object IsProduct = IsProductOrVariant(UUIdOrIdentifier); if(IsProduct.ToString() == "True"){ return Status ? "Active" : "Disabled"; } else{ return "Active"; }

Status

This dynamic formula uses a custom function to determine whether the incoming product from Akeneo is a Product or a Product Model. If it is identified as a Product Model, the Status field in iPaaS is statically mapped to "Active." For standard products, if the Status is not null, it is also statically mapped to "Active." Otherwise, it is statically mapped to "Disabled."

Dynamic Formula

return GetValueFromProductValues(Values,"product_weight_lb",null,null,"product_weight_lb","pound");

Weights

This mapping uses the GetValueFromProductValues function to retrieve the product's weight in pounds from Akeneo.

Dynamic Formula

return await ConvertAkeneoCategoryToIpaas(CategoriesCode)

Categories

This function receives a list of Category Codes from Akeneo, checks if these categories exist in iPaaS, and returns a list of Category IDs from iPaaS.

Dynamic Formula

var UUIdOrIdentifier=(Uuid != null ? Uuid : Identifier); string IsProduct =await IsProductOrVariant(UUIdOrIdentifier); if(IsProduct == "True"){ return "Product"; } else{ return "Variant"; }

TrackingMethod

This dynamic formula uses a custom function to determine whether the incoming product from Akeneo is a Product or a Product Model (which can have variants). If it is identified as a Product Model, the Tracking Method field in iPaaS is statically mapped to "Variant." Otherwise, if it is a standard product, "Product" will be sufficient for the mapping.

Akeneo Product Option To iPaaS (Child Collection)

Mapping Type

Source (Akeneo Templates Latest)

Destination (iPaaS.com)

Description

Dynamic Formula

var optName = GetNameFromLabelOption(Labels,"en_US"); if(optName != null){ return optName; } else{ return " "; }

OptionName

This mapping uses a conversion function that retrieves the Option Name by checking the Labels for the specified locale (in this case, "en_US"). If an option name is found, it is returned. If no label is available for the specified locale, the mapping will return an empty string (" ").

Field

Type

Type

Akeneo Product Option Value To iPaaS (Child Collection)

Mapping Type

Source (Akeneo Templates Latest)

Destination (iPaaS.com)

Dynamic Formula

var optValue = GetNameFromLabelOption(Labels,"en_US"); if(optValue != null){ return optValue; } else{ return " "; }

Value

Field

Order

Order

Parent Collection: Akeneo Product Inventory To iPaaS – Location MAIN

Mapping Type

Source (Akeneo Templates Latest)

Destination (iPaaS.com)

Description

Dynamic Formula

return await LocationIdFromNameAsync("MAIN");

Locationid

The LocationId is a required field that must be mapped using a dynamic formula. This formula employs a custom function designed to return the iPaaS location ID based on the name provided as a parameter. If the specified location name exists, the function will retrieve the corresponding location ID; otherwise, it will return null.

Dynamic Formula

return GetValueFromProductValues(Parent.Values,"main_inventory",null,null);

QtyAvailable

This mapping utilizes a conversion function which retrieves the main inventory value from the product's data. It specifically targets the "main_inventory" attribute within the Parent.Values context. The function is called without specifying a locale or scope, allowing it to return the inventory value directly associated with the product

Parent Collection: Akeneo Product Inventory to iPaaS - Location EAST

Mapping Type

Source (Akeneo Templates Latest)

Destination (iPaaS.com)

Description

Dynamic Formula

return await LocationIdFromNameAsync("EAST");

Locationid

The LocationId is a required field that must be mapped using a dynamic formula. This formula employs a custom function designed to return the iPaaS location ID based on the name provided as a parameter. If the specified location name exists, the function will retrieve the corresponding location ID; otherwise, it will return null.

Dynamic Formula

return GetValueFromProductValues(Parent.Values,"east_inventory",null,null);

QtyAvailable

This mapping utilizes a conversion function which retrieves the east inventory value from the product's data. It specifically targets the "east_inventory" attribute within the Parent.Values context. The function is called without specifying a locale or scope, allowing it to return the inventory value directly associated with the product

Parent collection: Product Related Product To iPaaS

Mapping Type

Source (Akeneo Templates Latest)

Destination (iPaaS.com)

Description

Field

Quantity

Quantity

It can only be set statically if product unit is required.

Dynamic Formula

var expectedType = "Product"; if(IsVariant == true){expectedType = "Product Variant";} return await GetSpaceportIdAsync(ProductId, expectedType, SpaceportSystemId);

RelatedId

This code checks if IsVariant is true to determine if the item is a product or a product variant, then retrieves a spaceport ID based on the item's type (Product or Product Variant) and its associated system ID

Field

IsVariant

IsVariant

Lookup Translation

Product Akeneo Association Types To iPaaS

RelatedType

Users can create their own custom association types in the Akeneo portal and define the corresponding types related to iPaaS. For example in Akeneo we have X_SELL and in iPaaS we can map to related Type "Cross Sell" Sku and in iPaaS we can map to related Type "Replacement" and for Quantified Association In Akeneo we have "quantity" and in iPaaS we can map to related Type "Child"

Parent collection: Akeneo Product Unit To iPaaS

Mapping Type

Source (Akeneo Templates Latest)

Destination (iPaaS.com)

Description

Static

EACH

Name

It can only be set statically if product unit is required.

Akeneo Product Kit To iPaaS

Mapping Type

Source (Akeneo Templates Latest)

Destination (iPaaS.com)

Description

Dynamic Formula

Parent.Family

Kit Type From Akeneo

It can only be set statically if product unit is required.

Field

Sku

Sku

Required Field

Static

Basic

Type

It is required field for iPaaS, and we recommend using static value "Basic" for this mapping field.

Akeneo Product Bundles To iPaaS Kit Components (Child Collection)

Mapping Type

Source (Akeneo Templates Latest)

Destination (iPaaS.com)

Description

Field

SelectionPriceValue

Akeneo Bundled Product Price Value

Field

SelectionPriceType

Akeneo Bundled Product Price Type

Field

OptionCode

Akeneo Bundled Product Option Code

Field

SelectionCanChangeQty

Akeneo Bundled Product CanChangeQty

Field

IsDefault

Akeneo Bundled Product IsDefault

Field

OptionTitle

Akeneo Bundled Product Option Title

Field

OptionPosition

Akeneo Bundled Product Option Position

Field

OptionRequired

Akeneo Bundled Product Option IsRequired

Field

Sku

Sku

SKU is a required field and will always have a valid value. Invalid SKU records are ignored due to the mapping filter applied in this mapping collection.

Dynamic Formula

SelectionQty! = null? double.Parse(SelectionQty) : 1;

Dynamic Formula

Quantity of Kit Component in iPaaS cannot be lesser than 1 so used this dynamic formula that if Akeneo bundle product has any quantity then it should be parsed to double, otherwise it should be 1.

Dynamic Formula

await GetVariantOrProductUnitNameBySku(Sku);

Unit

This field is required and must contain a valid value. Therefore, this custom function is used in the mapping to provide the correct iPaaS product unit name. The unit's name must be returned, as the same formula is applied in the mapping filter. If the function does not return a valid unit name, the record will not be translated

Static

Per Parent Quantity

Type

This is required field which must be statically set to Per Parent Quantity

Akeneo Product Variant To iPaaS (Child Collection)

Mapping Type

Source (Akeneo Templates Latest)

Destination (iPaaS.com)

Description

Dynamic Formula

var priceString = GetValueFromProductValues(Values,"price",null,null,null,"usd"); if(priceString != null && !string.IsNullOrEmpty(priceString)){ float price = (float) Convert.ToDouble(priceString); return price; } else{ return 0; }

DefaultPrice

This mapping utilizes a conversion function that returns a string value from the provided Values object (passed as the first parameter) based on the specified field name (provided as the second parameter). If the "price" exists, it is mapped to the DefaultPrice field in iPaaS. Otherwise, static value 0 is mapped to the iPaaS DefaultPrice.

Dynamic Formula

var priceString = GetValueFromProductValues(Values,"price",null,null,null,"eur"); if(priceString != null && !string.IsNullOrEmpty(priceString)){ float price = (float) Convert.ToDouble(priceString); return price; } else{ return 0; }

SalePrice

This mapping utilizes a conversion function that returns a string value from the provided Values object (passed as the first parameter) based on the specified field name (provided as the second parameter). If the "price" exists, it is mapped to the SalePrice field in iPaaS. Otherwise, static value 0 is mapped to the iPaaS SalePrice.

Dynamic Formula

var sku = GetValueFromProductValues(Values,"sku"); if(sku != null){ return sku; } else{ return Id.ToUpper(); }

Sku

The SKU is a required field and must be mapped using this dynamic formula to ensure consistency. This mapping utilizes a conversion function that returns a string value from the provided Values object (passed as the first parameter) based on the specified field name (provided as the second parameter).

Dynamic Formula

var weightString = GetValueFromProductValues(Values,"product_weight_lb",null,null,"product_weight_lb","pound"); if(weightString != null && !string.IsNullOrEmpty(weightString)){ float weight = (float) Convert.ToDouble(weightString); var intWeight = (int)Math.Round(weight); return intWeight; } else{ return 0; }

Weight

The updated mapping function retrieves the product's weight in pounds from Akeneo by using the GetValueFromProductValues function to target the "product_weight_lb" attribute.

Dynamic Formula

return await GetProductVariantOptionValues(VariantOptionValues,"en_US");

Options

This mapping uses a conversion function to retrieve the variant option values for a product, specifically for the "en_US" locale. The function checks the VariantOptionValues object and returns the corresponding variant option values for the specified locale. If no variant options are found, it returns null, and no variant options get assigned.

Akeneo Product Variant Inventory To iPaaS - Location EAST

Mapping Type

Source (Akeneo Templates Latest)

Destination (iPaaS.com)

Description

Dynamic Formula

return await LocationIdFromNameAsync("EAST");

LocationId

The LocationId is a required field that must be mapped using a dynamic formula. This formula employs a custom function designed to return the iPaaS location ID based on the name provided as a parameter. If the specified location name exists, the function will retrieve the corresponding location ID; otherwise, it will return null.

Dynamic Formula

return GetValueFromProductValues(Parent.Values,"east_inventory",null,null);

QtyAvailable

This mapping utilizes a conversion function which retrieves the east inventory value from the product's data. It specifically targets the "east_inventory" attribute within the Parent.Values context. The function is called without specifying a locale or scope, allowing it to return the inventory value directly associated with the product

Akeneo Product Variant Inventory To iPaaS - Location EAST

Mapping Type

Source (Akeneo Templates Latest)

Destination (iPaaS.com)

Description

Dynamic Formula

return await LocationIdFromNameAsync("MAIN");

LocationId

The LocationId is a required field that must be mapped using a dynamic formula. This formula employs a custom function designed to return the iPaaS location ID based on the name provided as a parameter. If the specified location name exists, the function will retrieve the corresponding location ID; otherwise, it will return null.

Dynamic Formula

return GetValueFromProductValues(Parent.Values,"main_inventory",null,null);

QtyAvailable

This mapping utilizes a conversion function which retrieves the main inventory value from the product's data. It specifically targets the "main_inventory" attribute within the Parent.Values context. The function is called without specifying a locale or scope, allowing it to return the inventory value directly associated with the product

Akeneo Product Variant Related Product To iPaaS

Mapping Type

Source (Akeneo Templates Latest)

Destination (iPaaS.com)

Description

Field

Quantity

Quantity

Quantity Value will come from Quantity Associations from Akeneo

Dynamic Formula

var expectedType = "Product"; if(IsVariant == true){expectedType = "Product Variant";} return await GetSpaceportIdAsync(ProductId, expectedType, SpaceportSystemId);

RelatedId

This code checks if IsVariant is true to determine if the item is a product or a product variant, then retrieves a spaceport ID based on the item's type (Product or Product Variant) and its associated system ID

Field

IsVariant

IsVariant

Lookup Translation

Variant Product Akeneo Association Types To iPaaS

RelatedType

Users can create their own custom association types in the Akeneo portal and define the corresponding types related to iPaaS. For example, in Akeneo we have X_SELL and in iPaaS we can map to related Type "Cross Sell" Sku and in iPaaS we can map to related Type "Replacement" and for Quantified Association In Akeneo we have "quantity" and in iPaaS we can map to related Type "Child"

Error Handling

Invalid Product ID

  • Description: The ProductId is invalid

  • Resolution: Ensure that the productId must be valid.

Missing Sku

  • Description: The Sku should be replaced if it is absent.

  • Resolution: Ensure that sku is present or if the sku is not, replace it with one: Uuid or identifier.

Validation Rules

  • ProductId must be unique or valid.

  • Product SKU must be unique or it can replace with Uuid or identifier.

  • DefaultPrice set to static value.

Testing & Validation

Test Scenarios

  • Valid Product: Syncs successfully.

  • Invalid ProductId: Error logged, product not created.

  • Missing or invalid SKU: Error logged.

  • Missing DefaultPrice: DefaultPrice set to static value 0.

Validation Checklist

  • ProductId must be in a valid format.

  • Product Sku valid format.

  • Default price is set to a static value.

Did this answer your question?