Notice: This post is more than three years old. It may be outdated.
As you may know, Magento is the leading Open Source eCommerce solution. So from Akeneo’s point of view, it’s quite an obvious channel where to send products information to.
From almost a year now, we propose an Open Source connector, allowing to push product information from Akeneo to Magento: the Magento Connector Bundle https://github.com/akeneo/MagentoConnectorBundle.
While already used on production on some projects, this connector bears some limitations we will discuss on details later.
Those limitations are not easy to overcome, as they are mostly linked to the native Magento SOAP API we use to send product data.
We decided to use the Magento SOAP API to keep our development to a minimum (read: not creating our own Magento module) and reach a working solution faster. We were aware of the performance problems, and we indeed trade that for a shorter time to market.
But we have realized that other problems added up to the performance issue. The native Magento SOAP API itself has a lot of shortcomings, like not being able to return the list of attributes if they don’t belong to an attribute set for example.
Or not being able to link simple products to configurable products (there’s an extra module to install for that: API Improve https://github.com/jreinke/magento-improve-api).
So in order to go further, we would need to rewrite the Magento Connector using another technology to send data to Magento. And that’s what we are doing right now 😉
Current version and short term evolutions
Even if the new version of the Magento Connector is in progress, it’s far from ready for use right now. So in the meantime, we will still work on the 1.* branch. But we still have limitations linked to the SOAP API, as well as some bugs linked to our own code. For the later, we are working on a 1.2 version.
Hard Limitations (imposed by the SOAP API)
- Slowness : At around 1 second per product per store view, it means that if you have 2000 products and 3 store views, it will takes more than 1 hour and half to send all your products. Bearable for small catalog but unusable once you have more than a few thousands products.
- No way to change an attribute option : The SOAP API allows only “add” and “remove” for attribute option. So if you change your option label in Akeneo, we will not be able to send the changes to Magento. We could remove the previous option then add the option with the new values but it means the products that had the option don’t have it anymore, and will get it only after a product export, that could occurs some minutes or hours later. If this option is an apparel size, it means the customers on Magento side will not be able to buy the product of this size between the removal of the old option and the association of the new option to the product.
- No way to associate an existing attribute to an attribute set : Say we have a manufacturer attribute in Akeneo and one native in Magento that doesn’t belong to any attribute set (that is the native setup). As the Magento SOAP API allows only to get the list of attributes belonging to attribute set, we cannot get the id of the manufacturer attribute. So we cannot link it to an attribute set as the API call for this action only takes attributes ids and not codes. Same thing for attribute group that are only accessible by id, and the id can only be known by Akeneo if Akeneo created the attribute group itself.
While having the same hard limitations than the 1.1 version, this version should fix the main bugs. We expect to release this version in a couple of weeks. In the meantime, we will release a few 1.1 versions that bring some smaller bug fixes.
Main bug fixing
- Delta product export : One way to workaround the poor performances of the Magento SOAP API is to reduce the number of products that will be sent to Magento. In order to do that, the Magento Connector offers a Delta Product Export that only exports products modified since the previous export. In Magento Connector 1.1, this Delta product export is totally broken and doesn’t even work with configurable products. This part has been totally rewritten and is the main reason why we are going to bump the version to 1.2 as some public function signatures have been changed and are not compatible any more with the previous version.
- MongoDB compatibility : With 1.1 version, if you are using a MongoDB backend, it’s not possible to use the Magento Connector Bundle. Version 1.2 will fix that. But at first, the Delta Product Export will only work with MySQL backend. So MongoDB users will have to do full export.
The 1.2 version will be compatible with your existing Magento export job configuration. But if you have overriden some code of the Magento Connector Bundle in its 1.1 version, you may need to adapt your code to the 1.2 version.
How to follow progress
You can follow the progress of the 1.2 version from the master on the Magento Connector Github repository.
Version 2.0: Long term Evolution
Magento Connector 2 is a full rewrite of the Magento Connector Bundle. Almost no code has been kept from the first version.
In order to send product data to Magento, it uses the excellent API Import (https://github.com/danslo/ApiImport) from the non-less excellent Daniel Sloof. The clever thing about API Import is that it provides a SOAP interface to the native Magento product import system. Thus the guts of the import is really done by Magento native code.
It natively imports products and categories, and we contributed support for importing attribute sets, attribute groups and attributes as well.
What does it brings ?
- Better performances : You can easily count on 10x speed improvement compared to the 1.x version, thanks to the API Import
- No ids mapping : Unlike to the Magento SOAP API, all identification of element will be done through codes, and not ids. So this connector will play very well with existing Magento installation where attributes and attributes set already exists
- Separated configuration screen : On version 1.x, you have several jobs (attribute export, category export, product export). And you need to set the whole configuration (SOAP URL and credentials, mapping, etc…) for all of them, effectively recreating the same settings several times. With version 2, a separate configuration screen will be designed where all the Magento configuration will be centralised. Several configuration would coexist, allowing for example a production configuration and a staging configuration with different target host. On you export profile, you will just need to select the Magento configuration you want to use for your export, saving you from redoing several times the same configuration
- Removing of the category mapping : With version 1, any category from Akeneo can be mapped to any category on Magento side. While giving a lot of freedom, this feature is kind of difficult to use, for ergonomic reasons (a select with several thousands lines is not exactly efficient) and the main use case is simply to map the root of the Akeneo tree to a root category on Magento side. As the tree root on Akeneo’s side is already defined by the channel, we will just provide a way to choose the right Magento root category and not a full list of all categories from each side. In case of specific needs, you can create a specific tree that would represent the structure you want on your eCommerce website.
The version 2 of the Magento Connector is still in early development stage. It is able to send simple products to a Magento if the Magento has the right sets of attributes and attribute sets. Configurables products, categories, attributes and attributes sets are still in development. And there’s no configuration screen. But you can follow the developement right at the source: https://github.com/akeneo/MagentoConnectorBundle/tree/2.0
You can expect a first beta release at the end of February.
What about Magento 2 ?
We are aware that Magento 2 developer preview has been released some weeks ago. We still haven’t had a look yet but to make things clear, the Magento Connector version 2 is meant to be used for current stable version of Magento.
In the future, we hope to support Magento 2, but don’t hold your breath until Magento 2 stable has been released 😉