Skip to main content

Introduction

Akeneo has a different structure than CommerceTools regarding product data structure. There is some relation between products and product models, which will be transformed into products and product variants in CommerceTools. We make an Alumio-based product model to accommodate this.
{
  "code": "jacket",
  "categories": [
    {
      "categoryCode": "men_coats"
    },
    {
      "categoryCode": "women_coats"
    }
  ],
  "customAttributes": {
    "washing": "cold",
    "country": "United_States",
    "material": "cotton",
    "model_name": "Akeneo's teddy",
    "imported": false,
    "dry_clean": false
  },
  "localizations": [
    {
      "customAttributes": {
        "description": "What a wonderful teddy, available in 3 nice colors: purple, red and green"
      },
      "channelCode": "ecommerce",
      "localeCode": "en_US"
    },
    {
      "customAttributes": {
        "fit_info": "Our model wears a purple color and a XS"
      },
      "localeCode": "en_US"
    }
  ],
  "attributeSetCode": "tops",
  "parentCode": null,
  "children": [
    
  ]
}
Note that a product model in Alumio base can have children, which are different Alumio product models, and can also have a variant, which is the product of that product model.

Fetching Variants of the Product from Akeneo

  • In Alumio, go to “Integrations → Incoming → Akeneo - Fetch - Products with parent”. We defined variants as the product of a product model. Before we fetch the product model in Akeneo, we need to prepare the variants first (the product of the product model). This Incoming is designed to get products in Akeneo which have a parent, so we can be sure this will be a variant from the product model. This Incoming will not create any task but will update the storage of “Akeneo - Update Storage - Product Model Variants - Alumio Base Product” with a list of product data in Alumio base product data.
Image
Akeneo - Prepare Convert - Localizations filter
  • Use this transformer to only allow any localization with a channel code in “eCommerce” if it has the channel code. If you need another channel code, add the value in the Node Filter.
Image
Akeneo - Prepare convert - Values - To localizations and custom attributes This transformer converts localization data from Akeneo.
{
  "data": "Samsung Galaxy A5 (2017) SM-A520F 4G 32Go Or",
  "scope": null,
  "locale": "fr_FR",
  "attribute_type": "pim_catalog_text"
}
To ensure compatibility with CommerceTools data requirements, we use this transformer to normalize the current structure into a more manageable format.
{
  "4": {
    "customAttributes": {
      "name": "Samsung Galaxy A5 (2017) SM-A5 ...",
      "form_factor_771": "Barre",
      "second_display_3989": "Non",
      "zoom_capability_472": "Oui"
    },
    "localeCode": "fr_FR"
  }
}
Akeneo - Prepare convert - Product and product model - Categories to Alumio Base This transformer converts category data from Akeneo.
"categories": [
  "samsung",
  "smartphones"
],
To ensure compatibility with CommerceTools data requirements, we use this transformer to normalize the current structure into a more manageable format.
"categories": [
  {
    "categoryCode": "samsung"
  },
  {
    "categoryCode": "smartphones"
  }
]
Akeneo - Prepare convert - Product and product model - Prices to Alumio Base This transformer converts price data from Akeneo.
"price": [
  {
    "amount": "354.00",
    "currency": "EUR"
  },
  {
    "amount": "400.02",
    "currency": "GBP"
  },
  {
    "amount": "318.60",
    "currency": "USD"
  }
],
To ensure compatibility with CommerceTools data requirements, we use this transformer to normalize the current structure into a more manageable format.
"prices": [
  {
    "amount": "354.00",
    "currencyCode": "EUR"
  },
  {
    "amount": "400.02",
    "currencyCode": "GBP"
  },
  {
    "amount": "318.60",
    "currencyCode": "USD"
  }
]
Akeneo - Convert - Product - To Alumio Base product This transformer converts Akeneo product data into Alumio base product data.
{
  "groups": [],
  "prices": [...],
  "categories": [...],
  "identifier": "35523802",
  "localizations": [...],
  "customAttributes": {...},
  "code": "35523802",
  "attributeSetCode": "smartphones",
  "parentCode": "SM-A520F",
  "statusCode": true
}
Akeneo - Update Storage - Product Model Variants - Alumio Base Product This transformer creates a list of variants from the Alumio base product. It will load the previous iteration of this transformer to merge the list or create a new list. Then the list of variants will be saved in the storage “Akeneo - Product Model variants - Alumio Base Product”.
Image
Akeneo - Prepare update - Product Model Variants - Alumio Base Variant merge This transformer merges the list of variants in the transformer “Akeneo - Update Storage - Product Model Variants - Alumio Base Product” to ensure there will be no duplication based on the product code.

Fetching parent product model from Akeneo

  • In Alumio, go to “Integrations → Incoming → Akeneo - Product Models without parent”. Parent product model in Akeneo has a probability to have children, which is another product model or variant, which is the product of the product model. This Incoming is designed to get a list of product model which is the top parent or doesn’t have a parent. This Incoming will not create any task but will update the storage of “Alumio - Product Model Parent - Alumio Base Product Model” with parent product model data in the Alumio base product model.
    Image
Akeneo - Prepare convert - Values - To localizations and custom attributes This transformer converts localizations data from Akeneo.
{
  "data": "Samsung Galaxy A5 (2017) SM-A520F 4G 32Go Or",
  "scope": null,
  "locale": "fr_FR",
  "attribute_type": "pim_catalog_text"
}
To ensure compatibility with CommerceTools data requirements, we use this transformer to normalize the current structure into a more manageable format.
{
  "4": {
    "customAttributes": {
      "name": "Samsung Galaxy A5 (2017) SM-A5 ...",
      "form_factor_771": "Barre",
      "second_display_3989": "Non",
      "zoom_capability_472": "Oui"
    },
    "localeCode": "fr_FR"
  }
}
Akeneo - Prepare Convert - Localizations filter Use this transformer to only allow any localization with a channel code in “eCommerce” if it has the channel code. If you need another channel code, add the value in the Node Filter.
Image
Akeneo - Prepare convert - Product and product model - Categories to Alumio Base This transformer converts category data from Akeneo.
"categories": [
  "samsung",
  "smartphones"
],
To ensure compatibility with CommerceTools data requirements, we use this transformer to normalize the current structure into a more manageable format.
"categories": [
  {
    "categoryCode": "samsung"
  },
  {
    "categoryCode": "smartphones"
  }
]
Akeneo - Prepare convert - Product and product model - Prices to Alumio Base This transformer converts price data from Akeneo.
"price": [
  {
    "amount": "354.00",
    "currency": "EUR"
  },
  {
    "amount": "400.02",
    "currency": "GBP"
  },
  {
    "amount": "318.60",
    "currency": "USD"
  }
],
To ensure compatibility with CommerceTools data requirements, we use this transformer to normalize the current structure into a more manageable format.
"prices" : [
  {
    "amount" : "354.00",
    "currencyCode" : "EUR"
  },
  {
    "amount" : "400.02",
    "currencyCode" : "GBP"
  },
  {
    "amount" : "318.60",
    "currencyCode" : "USD"
  }
]
Akeneo - Convert - Product Model - To Alumio Base Product Model This transformer converts Akeneo product model data into Alumio base product model data.
{
  "code": "aphrodite",
  "prices": [
    {
      "amount": "299.00",
      "currencyCode": "EUR"
    }
  ],
  "categories": [
    {
      "categoryCode": "women_shirts"
    },
    { ... }
  ],
  "localizations": [
    { ... },
    { ... },
    { ... },
    { ... }
  ],
  "customAttributes": {
    "washing": "70deg",
    "imported": false,
    "packshot": [ ... ],
    "supplier": "zaro",
    "dry_clean": false,
    "collections": [ ... ]
  },
  "attributeSetCode": "tops",
  "parentCode": NULL
}
Alumio - Fetch storage - Alumio Base Product Model attach variants This transformer retrieves variant data generated by the ‘Akeneo - Fetch - Products with parent’ incoming configuration and maps it as a variant within the Alumio base product model.
"variants": [
  {
    "identifier": "aphrodite_0",
    "categories": [ ... ],
    "groups": [],
    "customAttributes": { ... },
    "localizations": [ ... ],
    "prices": [ ... ],
    "code": "aphrodite_0",
    "statusCode": false,
    "attributeSetCode": "tops",
    "parentCode": "aphrodite"
  },
  { ... },
  { ... }
]
Akeneo - Update storage - Product Model parent - Alumio Base Product Model This transformer saves the product model parent in the storage “Alumio - Product Model Parent - Alumio Base Product Model”.
Image

Fetching Children Product Model from Akeneo

  • In Alumio, navigate to “Integrations → Incoming → Akeneo - Fetch - Product Models with parent”. Once the parent and variant data for a product model are retrieved, this configuration fetches the associated children. Rather than creating new tasks, this “Incoming” updates the “Alumio - Product Model Parent - Alumio Base Product Model” storage, appending the child product model data to the existing Alumio base product model.
Akeneo - Prepare convert - Values - To localizations and custom attributes This transformer converts localizations data from Akeneo.
{
  "data": "Samsung Galaxy A5 (2017) SM-A520F 4G 32Go Or",
  "scope": null,
  "locale": "fr_FR",
  "attribute_type": "pim_catalog_text"
}
To ensure compatibility with CommerceTools data requirements, we use this transformer to normalize the current structure into a more manageable format.
{
  "4": {
    "customAttributes": {
      "name": "Samsung Galaxy A5 (2017) SM-A5 ...",
      "form_factor_771": "Barre",
      "second_display_3989": "Non",
      "zoom_capability_472": "Oui"
    },
    "localeCode": "fr_FR"
  }
}
Akeneo - Prepare Convert - Localizations filter Use this transformer to allow localization only with a channel code in “eCommerce” if it has one. If you need another channel code, add the value in the Node Filter.
Image
Akeneo - Prepare convert - Product and product model - Categories to Alumio Base This transformer converts category data from Akeneo.
"categories": [
  "samsung",
  "smartphones"
],
To ensure compatibility with CommerceTools data requirements, we use this transformer to normalize the current structure into a more manageable format.
"categories": [
  {
    "categoryCode": "samsung"
  },
  {
    "categoryCode": "smartphones"
  }
]
Akeneo - Prepare convert - Product and product model - Prices to Alumio Base This transformer converts price data from Akeneo.
"price": [
  {
    "amount": "354.00",
    "currency": "EUR"
  },
  {
    "amount": "400.02",
    "currency": "GBP"
  },
  {
    "amount": "318.60",
    "currency": "USD"
  }
],
To ensure compatibility with CommerceTools data requirements, we use this transformer to normalize the current structure into a more manageable format.
"prices" : [
  {
    "amount" : "354.00",
    "currencyCode" : "EUR"
  },
  {
    "amount" : "400.02",
    "currencyCode" : "GBP"
  },
  {
    "amount" : "318.60",
    "currencyCode" : "USD"
  }
]
Akeneo - Convert - Product Model - To Alumio Base Product Model This transformer converts Akeneo product model data into Alumio base product model data.
{
  "code": "aphrodite",
  "prices": [
    {
      "amount": "299.00",
      "currencyCode": "EUR"
    }
  ],
  "categories": [
    {
      "categoryCode": "women_shirts"
    },
    { ... }
  ],
  "localizations": [
    { ... },
    { ... },
    { ... },
    { ... }
  ],
  "customAttributes": {
    "washing": "70deg",
    "imported": false,
    "packshot": [ ... ],
    "supplier": "zaro",
    "dry_clean": false,
    "collections": [ ... ]
  },
  "attributeSetCode": "tops",
  "parentCode": NULL
}
Alumio - Fetch storage - Alumio Base Product Model attach variants This transformer fetches the data of the variant that was created from the Incoming “Akeneo - Fetch - Products with parent” and attaches it as a variant to the Alumio base product model.
{
  "groups": [],
  "prices": [...],
  "categories": [...],
  "identifier": "35523802",
  "localizations": [...],
  "customAttributes": {...},
  "code": "35523802",
  "attributeSetCode": "smartphones",
  "parentCode": "SM-A520F",
  "statusCode": true
}
Akeneo - Filter and prepare update storage - Filter for product model without variants and update parent This transformer filters the product model without a variant and will update the parent if not filtered.
Image
Akeneo - Update storage - Alumio Base Product Model update children This transformer updates the parent product model inside the storage “Alumio - Product Model Parent - Alumio Base Product Model” with the product model provided in the data.

Fetching simple products from Akeneo

In Alumio, go to “Integrations → Incoming → Akeneo - Fetch - Simple products or products without parent”. There are some product data without a product model in Akeneo. This will become a simple product for other systems. Akeneo - Prepare convert - Values - To localizations and custom attributes This transformer converts localizations data from Akeneo.
{
  "data": "Samsung Galaxy A5 (2017) SM-A520F 4G 32Go Or",
  "scope": null,
  "locale": "fr_FR",
  "attribute_type": "pim_catalog_text"
}
To ensure compatibility with CommerceTools data requirements, we use this transformer to normalize the current structure into a more manageable format.
{
  "4": {
    "customAttributes": {
      "name": "Samsung Galaxy A5 (2017) SM-A5 ...",
      "form_factor_771": "Barre",
      "second_display_3989": "Non",
      "zoom_capability_472": "Oui"
    },
    "localeCode": "fr_FR"
  }
}
Akeneo - Prepare Convert - Localizations filter Use this transformer to allow localisation only with a channel code in “eCommerce” if it has one. If you need another channel code, add the value in the Node Filter.
Image
Akeneo - Prepare convert - Product and product model - Categories to Alumio Base This transformer converts category data from Akeneo.
"categories": [
  "samsung",
  "smartphones"
],
To ensure compatibility with CommerceTools data requirements, we use this transformer to normalize the current structure into a more manageable format.
"categories": [
  {
    "categoryCode": "samsung"
  },
  {
    "categoryCode": "smartphones"
  }
]
Akeneo - Prepare convert - Product and product model - Prices to Alumio Base This transformer converts price data from Akeneo.
"price": [
  {
    "amount": "354.00",
    "currency": "EUR"
  },
  {
    "amount": "400.02",
    "currency": "GBP"
  },
  {
    "amount": "318.60",
    "currency": "USD"
  }
],
To ensure compatibility with CommerceTools data requirements, we use this transformer to normalize the current structure into a more manageable format.
"prices" : [
  {
    "amount" : "354.00",
    "currencyCode" : "EUR"
  },
  {
    "amount" : "400.02",
    "currencyCode" : "GBP"
  },
  {
    "amount" : "318.60",
    "currencyCode" : "USD"
  }
]
Akeneo - Convert - Product - To Alumio Base product This transformer converts Akeneo product data into Alumio base product data.
"price": [
  {
    "amount": "354.00",
    "currency": "EUR"
  },
  {
    "amount": "400.02",
    "currency": "GBP"
  },
  {
    "amount": "318.60",
    "currency": "USD"
  }
],
Akeneo - Convert - Alumio Base Product - To Alumio Base Product Model with variants This transformer copies the Alumio base product data into the Alumio base product model with a variant. We add the variant code with “-1” to avoid data duplication.
"prices" : [
  {
    "amount" : "354.00",
    "currencyCode" : "EUR"
  },
  {
    "amount" : "400.02",
    "currencyCode" : "GBP"
  },
  {
    "amount" : "318.60",
    "currencyCode" : "USD"
  }
]
Akeneo - Filter - Simple Product Use this transformer to filter previously created tasks into a simple product to avoid duplication.

Automatic fetching of product data from Akeneo to Alumio

  • In Alumio, go to “Integrations → Schedulers → Akeneo - Fetch complex products”.
Image
  • Set a schedule expression and enable the configuration.