Akeneo:connect

Akeneo:connect is a CELUM extension which allows you to synchronize previews, IDs, URLs and metadata from CELUM to Akeneo.
In the other direction you can synchronize the product structure and attributes from Akeneo to CELUM. It is also possible to write data from Akeneo to the CELUM structure to efficiently use the search of CELUM.

Akeneo:connect diagram

1. Requirements

  • Akeneo 2.3
  • CELUM 5.13.3

2. Installation

  • Configure needed information fields in CELUM
  • Configure needed Akeneo attributs
  • Configure an API key in Akeneo Akeneo configure API Key
  • Create an API user in Akeneo
  • Create a role in Akeneo and connect the API key with the user and the rights Akeneo configure role
  • Place Akeneo:connect .jar file in the /lib Folder
  • Restart celum appserver

3. Configuration

Properties

To be configured in {home}/appserver/conf/custom.properties

akeneoConnector.license

type: String, required: yes, default: -

The license of Akeneo:connect provided by brix e.g. akeneoConnector.license=B3Kj3MbcupVIF/zHV2fn0uwmjRpaQ4YcynIjENCxA0l4ncLRYyUZwubIhXKpgW/+baPziK

akeneoConnector.api.baseUrl

type: String, required: yes, default: -

The base URL of Akeneo
e.g. akeneoConnector.api.baseUrl=https://akeneo-demo.brix.ch

akeneoConnector.api.clientId

type: String, required: yes, default: -

The client ID of the Akeneo API key
e.g. akeneoConnector.api.clientId=1_3f8ostwi792c88sasdws123ww0skkgog0kg4c13k04s84k448g

akeneoConnector.api.clientSecret

type: String, required: yes, default: -

The client secret of the Akeneo API key
e.g. akeneoConnector.api.clientSecret=1fyrte3werps088w8sw1111kk0c4s04s0sc4wgso8c8css8kgso

akeneoConnector.api.username

type: String, required: yes, default: -

The name of the Akeneo API user
e.g. akeneoConnector.api.username=user_name

akeneoConnector.api.password

type: String, required: yes, default: -

The password of the Akeneo API user
e.g. akeneoConnector.api.password=password

akeneoConnector.api.pageLimit

type: Number, required: no, default: 100

The maximum number of records which are send back by one Akeneo request
e.g. akeneoConnector.api.pageLimit=100

akeneoConnector.api.connectTimeout

type: Number, required: no, default: 10

The timeout in seconds for establishing a connection to the Akeneo API e.g. akeneoConnector.api.connectTimeout=10

akeneoConnector.api.readTimeout

type: Number, required: no, default: 300 (5 minutes)

The timeout in seconds for reading data from the Akeneo API e.g. akeneoConnector.api.readTimeout=300

akeneoConnector.api.writeTimeout

type: Number, required: no, default: 600 (10 minutes)

The timeout in seconds for writing data to the Akeneo API e.g. akeneoConnector.api.writeTimeout=600

akeneoConnector.api.labelChannelCode

type: String, required: yes, default: -

The code of the channel in Akeneo which is used to synchronize data to CELUM e.g. akeneoConnector.api.labelChannelCode=ecommerce

akeneoConnector.informationFieldId.hierarchyIdentifier

type: Number, required: yes, default: -

This property is used to do a delta synchronization and is a helper field on the product node in CELUM. An ID of an information field in CELUM has to be set to this helper field. This field has to be a text information field.
e.g. akeneoConnector.informationFieldId.hierarchyIdentifier=205

akeneoConnector.hierarchyNodeTypeId

type: Number, required: yes, default: -

The ID of the nodeType in which the structure has to be synchronized in.
e.g. akeneoConnector.hierarchyNodeTypeId=104

akeneoConnector.hierarchySync.rootNodeId

type: Number, required: yes, default: -

The ID of the node where the structure has to be synchronized.
e.g. akeneoConnector.hierarchySync.rootNodeId=17362

akeneoConnector.hierarchySync.taskName

type: String, required: yes, default: -

The name of the CELUM task which synchronizes the structure in to CELUM.
e.g. akeneoConnector.hierarchySync.taskName=Hierarchy Sync

akeneoConnector.hierarchySync.taskGroup=Akeneo Connect

type: String, required: yes, default: -

The name of the CELUM task group which synchronizes the structure in to CELUM.
e.g. akeneoConnector.hierarchySync.taskGroup=Akeneo Connect

akeneoConnector.hierarchySync.taskCron

type: String, required: no, default: -

The cron expression for the synchronization task. If this property is left empty, the task will only run when started manually.
e.g. akeneoConnector.hierarchySync.taskCron=

akeneoConnector.hierarchy.{family_code}.{level}={attribute}

type: String, required: no, default:

akeneoConnector.hierarchy.default.level1=family  
akeneoConnector.hierarchy.default.level2=product_model:1  
akeneoConnector.hierarchy.default.level3=product_model:2  
akeneoConnector.hierarchy.default.level4=product

This is to define the structure which has to be synchronized. The first level always should be the family and the last the product.
The family_code defines on which family this hierarchy should be used. Because not all families have the same attributes. Default is the fallback and will be used, if for one family there is no special config set.
The level defines how many levels you want to have in your hierarchy. If there is a special configuration for one family all levels have to be configured.
At least you have to define which attribute from Akeneo has to be taken, to set up the hierarchy. You can also use the prefix index: to only show the first letter of the attribute.

akeneoConnector.hierarchy.camcorder.level1=family
akeneoConnector.hierarchy.camcorder.level2=index:attribute:producer 
akeneoConnector.hierarchy.camcorder.level3=attribute:producer
akeneoConnector.hierarchy.camcorder.level4=product_model:1
akeneoConnector.hierarchy.camcorder.level5=product_model:2
akeneoConnector.hierarchy.camcorder.level6=product

akeneoConnector.identifierAttributeCode

type: String, required: yes, default: sku

The code of the identifier attribute in akeneo.

akeneoConnector.import.{family_code}.{attribute_code}={infofield_id}

type: String, required: no, default: -

This is the import mapping from Akeneo attribute to a CELUM information field. Also here it is possible to set up a default or define it by family.

akeneoConnector.import.default.brand=123
akeneoConnector.import.camcorder.supplier=123

akeneoConnector.export.{family_code}.{attribute_code}

type: String, required: no, default: -

This is the export mapping from CELUM to an Akeneo attribute. Also here it is possible to setup a default or define it by family.
There are different options to export from CELUM:

  • media_file:standard:{orig/thmb/prvw/largeprvw} -> export one of the 4 previews of CELUM
  • media_file:custom:{download_format_id} -> export a picture in a predefined format
  • public_url:{description}:{provider}:{instance} -> export a public URL of CELUM
  • asset_id -> export the ID of the CELUM asset
  • asset_name -> export the name of the asset
  • asset_original_filename -> export the original filename
  • infofield_id -> export an information field
akeneoConnector.export.default.preview_url=media_file:standard:largeprvw
akeneoConnector.export.default.download_url=media_file:custom:3
akeneoConnector.export.default.public_url=public_url:url:connector.youtube:262
akeneoConnector.export.default.celum_id=asset_id
akeneoConnector.export.default.asset_name=asset_name
akeneoConnector.export.default.asset_titel=asset_original_filename

akeneoConnector.defaultCountryCode.{languageCode}

type: String, required: no, defaults: en_US, de_DE, fr_FR, es_ES, it_IT

Defines the default country code (variant) for a language.

Because CELUM does not support language variants, the connector needs to decide which language variant to use if Akeneo returns data for multiple variants of the same language e.g. en_US and en_GB.

Example:

akeneoConnector.defaultCountryCode.en=GB
akeneoConnector.defaultCountryCode.de=CH
akeneoConnector.defaultCountryCode.fr=BE

Example Configuration

#### Akeneo Connector ####
akeneoConnector.license={provided by brix}
akeneoConnector.api.baseUrl=https://akeneo-demo.brix.ch
akeneoConnector.api.clientId=iue5vmu489ughstusm5tzkljxy59zuhrtshnj4w5
akeneoConnector.api.clientSecret=lkuizes5v89z4tvohjsbpgsdtg5oö8ughtgjbdg
akeneoConnector.api.username=celum_api
akeneoConnector.api.password=kljt89PpPwtgtdjigsg!
akeneoConnector.api.pageLimit=100
akeneoConnector.api.connectTimeout=10
akeneoConnector.api.readTimeout=300
akeneoConnector.api.writeTimeout=600

# which akeneo channel to pull the infos from:
akeneoConnector.api.labelChannelCode=ecommerce
# infofield on node where the hierarchy info is stored:
akeneoConnector.informationFieldId.hierarchyIdentifier=205

# target of the akeneo hierarchy sync task
akeneoConnector.hierarchyNodeTypeId=104
akeneoConnector.hierarchySync.rootNodeId=1736
akeneoConnector.hierarchySync.taskName=Hierarchy Sync
akeneoConnector.hierarchySync.taskGroup=Akeneo Connect
akeneoConnector.hierarchySync.taskCron=

# default hierarchy configuration (family -> brand (-> product model(s)) -> product)
akeneoConnector.hierarchy.default.level1=family
akeneoConnector.hierarchy.default.level2=attribute:brand
akeneoConnector.hierarchy.default.level3=product_model:1
akeneoConnector.hierarchy.default.level4=product_model:2
akeneoConnector.hierarchy.default.level5=product

# different hierarchy configuration for family "clothes"
akeneoConnector.hierarchy.clothing.level1=family
akeneoConnector.hierarchy.clothing.level2=attribute:color
akeneoConnector.hierarchy.clothing.level3=product_model:1
akeneoConnector.hierarchy.clothing.level4=product_model:2
akeneoConnector.hierarchy.clothing.level5=product

# import infos from akeneo to CELUM
akeneoConnector.import.default.ean=202
akeneoConnector.import.default.weight=203
akeneoConnector.import.default.description=204
akeneoConnector.import.default.brand=102

# export infos from CELUM to akeneo
akeneoConnector.export.default.picture=media_file:custom:3
akeneoConnector.export.default.public_url=public_url:url:connector.youtube:262
akeneoConnector.export.default.celum_asset_id=asset_id

# default locale configuration
akeneoConnector.defaultCountryCode.en=US
akeneoConnector.defaultCountryCode.de=DE
akeneoConnector.defaultCountryCode.fr=FR
akeneoConnector.defaultCountryCode.es=ES
akeneoConnector.defaultCountryCode.it=IT

4. Usage

  • Login into the CELUM
  • Start the hierarchy synchronisation task
  • The configured structure will be set up in CELUM
  • Add assets to the product hierarchy
  • The information will be synchronized to Akeneo

5. Recommended

brix extension Carbon Copy

If there are mappings of data from Akeneo to CELUM, they will be written on the information field of the product node. To copy them from the node to all assigned Assets, we recommend to use our extension Carbon Copy

brix extension Asset Marker

If you like to see in general which assets are used in Akeneo, we recommend to use our extension Asset Marker

Release Notes

1.0

Released 2018-11-01

  • Initial version
1.0.3

Released 2018-11-08

  • Add license property
1.1.0

Released 2018-11-29

  • Add timeout properties
  • Add properties for default country code per language
1.2.1

Released 2018-12-04

  • Add property for akeneo identifier attribute code