How to setup and use the connector

Summary

In the PIM: Add a Connection

Via Connector

From the client’s PIM > CONNECT > Connection settings

  • Create a new connection

SETTINGS

  • Give a name
  • The flow type should be Data Source
  • Track in Data flows dashboard (useful to have analytics on how many products were sent into the PIM)

CREDENTIALS

  • Make sure to note the credentials somewhere safe as it will be encrypted once you SAVE your connection.

PERMISSIONS

  • SDM should have the right to EDIT the PIM, Role and Group need to ensure this.

 

In the SDM: Connector Set-Up

You need to have access to SDM Admin

 

1. Add a Connection

From Home > Connectors > Akeneo direct connections:

  1. Create a new “direct connection”
  2. Base URL: PIM url
  3. Organization: Name of organisation
  4. is config active: check it
  5. Config params: nothing to do
  6. Push config: nothing to do
  7. Config frequency: Cron sync parameter to decide

Report from PIM Connector connection (cf above)

  1. Client secret
  2. Client id
  3. Username
  4. Password

2. SDM Admin Configuration

Always be sure to refer to the API docs. The API docs are always up to date and should remain a source of truth. It is recommended to double check the info presented here against it.

 
  1. config_params

Here are all the options in the config_params section associated with an Akeneo Connector once the PIM configuration has been fetched:

  • use_locales used to select only a subset of the locales used in the PIM. This is used both for labels and for generating attributes.
  • use_uuid_push, use_uuid_memory, uuid_memory_reference_base and uuid_memory_keys : used when pushing to the UUID endpoint, more info here.
  • added_fields is used to create attributes not present in the PIM. This is for instance used to add fields targeting the ERP instead of the PIM. All added fields have to go through there because, as stated in the beginning, doing changes directly in the project configuration will mean they'll be lost during the next sync.
  • added_groups same as above but for groups
  • override_fields allow user to override specific attributes. The name and groups are both required and the groups can be left to null to override ALL definitions of an attribute regardless of its group.
  • variants_active is used to activate variants in the project. See the Variant doc for more info.
  • restrict_classification_to_variants : in the classification step, only allow selecting family variants. Requires variants_active to be true. Defaults to false.
  • include|exclude_families|channels|attributes|attribute_groups : used to make the connector target only specific families, channels, attributes or attribute groups. All of them can be combined. Targeting only a subset of families will mean that attributes no associated with none of the families actually used will be ignored and not even appear in the project.
  • include|exclude_categories : used to make the connector target only specific categories. Note that when a category is not included / excluded, all of its child categories will also be excluded.
  • split_categories is used to have one hierarchy per category tree vs a single tree. See details above.
  • source_attributes: Default attributes that are set as “source ” for the categorisations and the extractions. Those attributes are marked as mandatory for the mapping steps.
  • max_rows_per_table is used to control the number of attributes created for table attributes.
  • max_requirement_level can take the values optional, important or required. It is the same behavior as for steps but for all the attributes generated by the connector. Some mandatory attributes (the sku for instance) will remain required to make sure we can actually push the products to the PIM.
  • multiple_value_separator legacy option used for customers who don't want us to push directly to the PIM, this controls the separator used for attributes with multiple values.
  • allow_categorisation_intermediary_node_selection used to control whether the user will be allowed to select non-terminal nodes when categorizing a product.
  • exclude_parents_attributes_for_step: only relevant for the variant module if variants_active is True.
  • exclude_children_attributes_for_step: only relevant for the variant module if variants_active is True.
  • boolean_values is used to map values for true and false in the output.
  • exclude_date_attributes is used to include or exclude date attributes from the connector.
  • added_options is used to add options for all select attributes in the connector.
  • preserve_identifiers_case is used to preserve the original letter case in product identifiers and codes. If false, it convert them to lowercase.
  • allowed_options_for_pim_attribute_addition is used to allow you to create new options from the value mapping step in SDM into external systems (like PIM) and update the SDM configuration. This accepts an array of strings, which should be codes of existing fields (like PIM attributes) that you want to allow enriching with new options—only these attributes will be able to add options from SDM.
  • use_dependencies : set this to true to apply the PIM dependencies to SDM. This feature is currently in beta. Defaults to false.
  • default_product_enabled_value : set the value of the “enabled” status to all new products pushed to the PIM. Defaults to true. Requires a configured uuid_reference_base.
  • price_fields_by_currency : Defaults to true. price_fields_by_currency=false is only meant for keeping compatibility with older workflows, and its use is not advised for new workflows.
    • If true, one SDM field is created per active currency for PIM price collection attributes . Hence for example if you have an attribute ‘retail_price’ and two active currencies USD and EUR for your ‘ecommerce’ channel, you will have ‘retail_price-ecommerce-USD’ and ‘retail_price-ecommerce-EUR’ SDM number fields.
    • if false, one SDM field only is created for all currencies, and one additional select field is created to choose the currency. Hence for the above example of the ‘retail_price’ attribute, you would have one SDM number field ‘retail_price-ecommerce’, and one SDM select field ‘retail_price-ecommerce-unit’ with ‘USD’ and ‘EUR' options.

Note that if a Credential Error occurs during a Fetch action, the system will deactivate the configuration and send a message to our Team.

 

Example configuration

{
  "use_locales": [
    "fr_FR"
  ],
  "added_fields": [
    {
      "name": "unifai_image_url",
      "type": "image_url",
      "label": {},
      "rules": [],
      "multiple": true,
      "separator": ";",
      "description": {},
      "requirement_level": "optional",
      "authorized_extensions": [
        ".jpg",
        ".jpeg",
        ".png",
        ".gif"
      ]
    },
    {
      "name": "code_modele",
      "type": "string",
      "label": {},
      "rules": [],
      "description": {},
      "requirement_level": "optional"
    },
    {
      "name": "REF_Retailer",
      "type": "string",
      "label": {},
      "rules": [],
      "description": {},
      "requirement_level": "optional"
    },

    {
      "name": "product_supplier_reference",
      "type": "string",
      "label": {
        "fr-FR": "Référence fournisseur"
      },
      "rules": [
        {
          "name": "max_length",
          "negate": false,
          "strict": false,
          "threshold": 32
        }
      ],
      "groups": [
        "fam_other_products"
      ],
      "description": {},
      "transformations": [
        {
          "name": "trim_whitespaces",
          "multiple": false
        }
      ],
      "requirement_level": "required"
    }
  ],
  "allowed_options_for_pim_attribute_addition": [
    "brand",
    "assembly_required"
  ],
  "use_uuid_push": true,
  "boolean_values": {
    "true": "true",
    "false": "false"
  },
  "override_fields": [
    {
      "name": "parcel-fr_FR_row0_product_to_stick",
      "groups": null,
      "default": false
    },
    {
      "name": "parcel-fr_FR_row0_parcel",
      "groups": null,
      "default": "Colis_1"
    },
    {
      "name": "product_step_of_publication",
      "groups": null,
      "default": "product_publication_step_1"
    },
    {
      "name": "product_model_name-fr_FR",
      "groups": null,
      "requirement_level": "required"
    },
    {
      "name": "product_supplier_id",
      "groups": null,
      "requirement_level": "required"
    },
    {
      "name": "product_supplier_reference",
      "groups": null,
      "requirement_level": "required"
    }
  ],
  "use_uuid_memory": true,
  "variants_active": true,
  "exclude_channels": [],
  "exclude_families": [
    "fam_spare_parts",
    "fam_samples"
  ],
  "split_categories": false,
  "uuid_memory_keys": [
    "product_supplier_id",
    "product_supplier_reference"
  ],
  "source_attributes": [
    "product_model_name",
    "product_origin_name",
    "product_origin_description",
    "product_brand"
  ],
  "exclude_attributes": [
    "product_maintenance_advice",
    "product_name",
    "product_long_name",
    "product_variant_full_name d'unifai",
    "SKU",
    "product_mother",
    "product_summary",
    "product_description",
    "product_description_instruction",
    "product_keywords",
    "product_main_points",
  ],
  "max_rows_per_table": 5,
  "max_requirement_level": "important",
  "multiple_value_separator": ",",
  "uuid_memory_reference_base": "retailer_staging_uuid",
  "exclude_parents_attributes_for_step": [],
  "exclude_children_attributes_for_step": [],
  "allow_categorisation_intermediary_node_selection": false,
  "price_fields_by_currency": true
}
  1. variant_params

Here are all the options in the variant_params section:

  • automation : it controls the automated grouping of products
    • enabled (boolean defaults to false) : if set to true we will attempt to group products automatically. This can only be enabled if default_id_column is set. 
    • If allow_product_model_without_matching_group is disabled, products with no matching_group will be marked as independent automatically.
    • grouping_columns (array of string defaults to an empty array) : Defines which product attributes (e.g., size, color, brand) need to match for products to be grouped together. This list cannot be empty if enabled is true.
    • group_empty_columns (boolean defaults to false): Controls whether products with missing values in the grouping columns can still be automatically grouped. This feature is disabled for safety reasons, reducing the risk of incorrect groupings, but it can be enabled if users wish to maximize automation.
  • product_model_name_column : This is the attribute that does not need to be pushed into the PIM. The SDM will store the product model ID for the product here; it will be empty if the product is independent. The content includes the name of the attribute and its associated labels.
  • product_model_head_column : this is the attribute (that don't have to be pushed into the PIM) where SDM will store the type of the row (child, parent, independent or ungrouped). The content is the name of the attribute and the associated labels.
  • export_data : this is a list whose elements can be "parent", "child" or "independent". When the step is finalized, the products whose "product_model_head_column" is in the list of columns will be made available in the "export" dataframe.
  • output_data : this is a list whose elements can be "parent", "child" or "independent". When the step is finalized, the products whose "product_model_head_column" is in the list of columns will be made available in the "output" dataframe and continue to the next step.
  • default_id_column : used to automatically fill the group id column based on an attribute value when creating a product model
  • unique_columns: list of attributes used to validate that all products belonging to the same model have distinct values. Mostly used in matching_groups (below) and rarely used here at the root of the config.
  • invariant_columns : list of attributes that will be marked as invariant when creating a product model.
  • variant_columns : list of attributes that will be marked as variants when creating a product model.
  • allow_product_model_without_matching_group : flag to authorize to group products without a matching group together. This is set by default to false by the connector.
  • matching_groups : list of groups used for automation & validation. Each entry has the following arguments :
    • name : id of the group
    • label : mapping of locale => label used for display purposes only
    • conditions : list of rules used to tell if a given product belongs to a matching group. Note that, unlike groups, a product can only belong to a single matching group and will belong to the first one where they match all conditions.
    • unique_columns : list of attributes used to validate that all products belonging to the same model have distinct values. If all the fields in this list are similar then it means that the product is identical and not a variant (see above).
    • variant_columns : list of attributes that will be marked as variants when creating/updating the product model (cannot be changed in the UI).
    • invariant_columns : list of attributes that won't be able to be marked as variants when creating/updating the product model.

Limitations and Known Issues

Locales

Our system uses locales to display labels in the preferred language of the user. However, this can create challenges in collaborative environments. For example, if a user selects French as their locale for ease of use, the entire interface will be translated into French, which may cause difficulties for English-speaking colleagues who share the same workspace.