Welcome to the documentation for our Bynder Connector designed to seamlessly integrate Bynder’s DAM with Akeneo’s PIM. This guide will empower you to create a unified workflow, efficiently managing both product information and digital assets.
Afterwards managing these assets in Bynder DAM is very easy, as the connector provides the ability to enrich asset metadata in Bynder DAM by syncing product data of the linked product in Akeneo PIM.
This documentation will guide you through the necessary steps to get the connector up and running on your Akeneo project.
There are 4 Task Types in the Bynder App:
Click on the + Create button on the right side. In the modal you can enter your task code and select the type for your new task:
bynder_v2_import_assets_from_bynder: This task is used to import digital assets from Bynder. The task allows you to retrieve assets from Bynder and store them in Akeneo
bynder_v2_enrich_bynder_asset_properties: This task will update the asset type, product codes, product model codes and all mapped meta properties of the asset in Bynder.
bynder_v2_full_bynder_sync: This task will run the 2 tasks above in sequence.
bynder_v2_unlink_assets_from_bynder: This task will look at all the assets in Bynder and validate if it must be unlinked in Akeneo.
We will start off by doing the preparations on the Bynder instance. A few things need to be set up here.
You can create a permanent token by navigating to ‘Advanced settings’ > ‘Portal settings’ > ‘Permanent tokens’ using the cog in the upper right hand side of the application, provided you have the necessary rights to do so.
Clicking ‘Add new’ prompts a form with a Bynder user selection. This would preferably be linked to a dedicated user, since the history/actions will be linked to the selected one. The user should have the following permission active:
Next up you select the access scopes of the token:
After selecting the user, scopes and confirming, a permanent token should be generated (store it somewhere on temporary location as leaving the page will obscure the token) which we can use to add to the credentials in Akeneo.
A few metaproperties need to be defined/existent to link to a product’s (or model’s) identifier and the related attribute within that product in Akeneo.
First of all, we want a product identifier with the advised configuration as follows:
Then we define the same type of metaproperty, but for product model codes:
We want to make sure there is a metaproperty that contains/links to the attribute name that reflects the image attribute name of the product in Akeneo. The following setup would be advised:
There is an optional possibility to map 1 metaproperty option to multiple image attributes, provided they have the same name affixed with a dash and count. (f.e. ‘application’ in bynder => ‘application_1’, ‘application_2’ in Akeneo CE) In that case, an order field needs to be added in Bynder to define the order of the assets that get linked.
The metaproperty configurations above are according to us the most optimal configurations in terms of usability and added value. As long as the metaproperty is available through the Bynder API (ApiField) and the value reflects/maps with the corresponding values in Akeneo, the asset will get linked.
Each task needs to have the json mapping. Below is a list of mappings used in our application.
Click on the mapping title to view more details about each mapping.
If you need further assistance, please do not hesitate to ask.
{
"domain_mappings": {
"acc": "https://induxx.demo.cloud.akeneo.com"
},
"property_mappings": {
"asset_type": "asset_type",
"sort_order": "akeneo_order",
"domain_code": "domain",
"product_code": "product_codes",
"applicable_scopes": "applicable_scopes",
"applicable_locales": "applicable_locales",
"product_model_code": "product_model_codes"
},
"derivative_mappings": {
"urls": {
"product_image": {
"ecommerce": "product_image_ecommerce_url"
}
}
},
"new_asset_version_on_update_mappings": [
"main_image"
],
"enrichment_metaproperty_mappings": {
"family": "family",
"brand_name": "Brand"
},
"enrichment_metaproperty_locale_mappings": [
"family"
],
"asset_type_metaproperty_options_mappings": {
"basis": "basis",
"picture": "picture",
"main_image": "main_image",
"product_image": "product_image_bynder",
"scopable_image": "scopable_image",
"application_image": "application",
"localizable_image": "localizable_image"
},
"enrichment_metaproperty_options_mappings": {
"color": {
"red": "red_bynder",
"blue": "blue_bynder",
"green": "green_bynder"
},
"category": {
"electronics": "electronics_bynder",
"clothing": "clothing_bynder",
"accessories": "accessories_bynder"
}
},
"attributes_with_no_physical_file_mappings": [
"product_image"
],
"scopable_asset_type_metaproperty_mappings": [
"scopable_image"
],
"sortable_asset_type_metaproperty_mappings": [
"application_image"
],
"update_metaproperty_on_empty_only_mappings": [
"color"
],
"localizable_asset_type_metaproperty_mappings": [
"localizable_image"
]
}
{
"domain_mappings": {
"acc": "https://induxx.demo.cloud.akeneo.com"
},
"property_mappings": {
"domain_code": "domain",
"applicable_scopes": "applicable_scopes",
"asset_family_code": "akeneo_asset_family_code",
"applicable_locales": "applicable_locales"
},
"asset_family_mappings": {
"bynder_assets": "bynder_assets"
},
"media_link_attribute_code": "bynderurl"
}
{
"property_mappings": {
"domain_code": "domain",
"applicable_scopes": "applicable_scopes",
"applicable_locales": "applicable_locales",
"reference_entity_code": "reference_entity_code",
"reference_entity_record_code": "reference_entity_record_code",
},
"reference_entity_media_attribute_code": "image",
"derivative_mappings": {
"urls": {
"image": {
"ecommerce": "image_ecommerce_url"
}
}
},
}
{
"property_mappings": {
"domain_code": "domain",
"applicable_scopes": "applicable_scopes",
"applicable_locales": "applicable_locales",
"category_code": "category_code",
},
"category_media_attribute_code": "media",
"derivative_mappings": {
"urls": {
"media": {
"ecommerce": "media_ecommerce_url"
}
}
},
}
AKBYNDCON-27 - Added fallback to local storage
We added a fallback to local storage for reading and downloading files in Akeneo.
AKBYNDCON-26 - Function attributeIsOnCorrectLevel is not working for product models
The function attributeIsOnCorrectLevel is not working for product models. It always returns false.
AKBYNDCON-24 - Original filename is missing extension
Original filename is missing extension when we upload to Bynder
AKBYNDCON-25 - Mass unlinking of products from an asset
Fixed issue with mass unlinking of products from an asset
AKBYNDCON-23 - Link products when uploading asset
Unlinking of the previous asset was not done. We made also a fix for linking the products when uploading using the mass edit action.
AKBYNDCON-22 - Meta property options mapping not working
The connector didn't used the meta property options mapping correctly. This is now fixed.
AKBYNDCON-21 - Link products when uploading asset
We now link automatically the product('s) when you upload an image in Akeneo. This also works when you use mass action
AKBYNDCON-8 - added better console output
perf: added better console output
AKBYNDCON-9 - using wrong derivative
fix: The upload of an asset does not result in the correct derivative
AKBYNDCON-10 - api routes doesn't work anymore
fix: api routes
AKBYNDCON-11 - refresh asset thumbnail
feature: Akeneo asset thumbnail preview refresh
AKBYNDCON-12 - fallback to original derivative
fix: get original file when derivative is not found
AKBYNDCON-7 - getFamilyVariant() on null
fix: Call to a member function getFamilyVariant() on null
AKBYNDCON-6 - map meta property option to multiple attributes
feat: made it possible to map a meta property option to multiple attributes
AKBYNDCON-5 - added tests
feat: added phpunit tests
AKBYNDCON-4 - fix updating properties of assets
fix: updating properties of assets linked to product models
AKBYNDCON-2 - fix unlinking of asset
fix: unlinking of asset doesn't work
AKBYNDCON-3 - using default image
feat: use default image if derivative is not found
AKBYNDCON-1 - Inital release
Inital release for the Bynder connector