Extension for Magento by Anowave
Synchronizes products and inventory between two or more Magento installations automatically. Keeps stock data and quantity levels consistent on multiple Magento installations.
This extension allows for real time sync between two or more Magento installations. Product update is carried out silently in the background, automatically and in real time via SOAP. Syncs product data, media and pricing options between two or more Magento installations.
Built-in support for simple and configurable products.
If you're using multiple Magento installations to sell products it could quickly become cumbersome to keep data up-to date. This is especially valid for stock level quantities. When the same product is distributed over different channels there is a chance customers to purchase more items then you actually have in stock.
This extension allows for updating stock level quantities automatically across all channels. When a customer purchases a product in one of your stores, the remaining available quantity is updated throughout the other selling channels thus preventing wrong quantities.
It also allows you to effectively import products and product data from one Magento installation to another in real time.
The module has to be installed on each of your servers. One of those servers is presumed Primary and the rest of them Slave. When a product update occurs in the Primary server, the module will use SOAP request to update the product on all other slave servers. If the product doesn't exist on any of the slave servers, it will be created automatically. If the product doesn't exist on all slave servers, it will be created on all of them. The extension successfully copies ALL product data such as name, description and pricing. Images are also copied and updated on all slave servers automatically. Last but not least, the module supports configurable products and copies/re-creates configurable's associated products (e.g. simple products with a configurable parent).
It also copies user defined attributes as well.
In this release the only requirement is to have the same attributes & attribute sets between all Magento installations. Automatic set and/or attributes synchronization is not supported.
Unlike other similar solutions, this extension allows for syncing two or more Magento installations running on different servers. It also keeps quantities consistent amongst each Magento installation prior and after purchase and/or quantity update.
The extension has built-in schema verification which when turned on will check the differencies between primary and slave servers in terms of attributes, attribute sets, and attribute options. If a discrepancy is detected the module will report these to admin and he/she knows where an attribute or attribute option is missing. When verification is turned off the module will still try to sync products between servers. As long as attributes aren't required, the product will be updated successfully. Attributes that don't match will not be set.
Due to performance optimizations some limitations exist. Find below a list of the limitations of this version. These will be added and supported most certianly in future releases of the extension:
Our products come with a premium support. To report a bug, use our Premium Help Desk available in your account at Anowave.
We're selling the same products through several channels and this extension saved us huge amount of time. Works as described and fits our needs. Support is excellent. We needed some additional stuff developed and the engineers from Anowave delivered quickly. Thank you.
Yes, I recommend this product
This extension can be installed in a few minutes, by going through the following steps:
In order to work properly the extension MUST be installed on each Magento environment separately and configured accordigly. To better understand how to configure take the following as example.
To use the extension, you need to create an API user in Magento. This API user is also related to a so-called API role. By default, there is neither API user nor API role, so you need to configure both.
First an API role needs to be added. Login to the Magento Admin Panel and navigate to System > Web Services > Roles.
Create a new API role
This page lists the current API roles. If there none listed yet, click on Add New Role.
Every role needs a name. This can be anything. Just make sure it is descriptive enough for yourself. The second tab on the left (Role Resources) allows you to select which resources should be available for users with this role. While you can select exactly which privileges are given, we recommend you select All unless you're willing to spend hours with experimenting.
Create a new API user
Now that the role is created, you can add an user that makes use of this role. The strange thing here is that the user fields here seem to indicate a person or individual, while in fact we're creating a system account of some kind. The fields First Name, Last Name and Email just need to be filled in with any value you like. Make sure the User Name and Api Key are secure enough. he second tab on the left is called User Role, and that's where you select the role earlier created.
To explain how to configure module, it is best to use an example. Presume that you want to sync 2 Magento installations (the same would work for 3 or more).
a) Presume your first server is http://example1.com. We'll refer to this as Primary server
b) Presume your second server is http://example2.com. We'll refer to this as Slave server
The extension can be configured quickly and requires minimum amount of knowledge. To configure the extension:
CONFIGURATION AT PRIMARY SERVER
CONFIGURATION AT SLAVE SERVER
In effect the idea is to configure reciprocal settings e.g. the WSDL address in Primary server points to Slave server and vise-versa, the WSDL address in Slave server points to Primary server. This way when an update occurs on Primary server it will update all slave servers specified. This works for Slave server as well, when an order occurs in Slave server it will update primary server in terms of stock levels etc
By default the extension will sync only default product attributes and text attributes. To sync user defined attributes which are dropdown, you need to describe them explicitly. This can be done from the extension's configuration screen under Advanced settings. Type the attribute codes as comma separated strings in Custom attributes field.
Attribute codes can be obtained in Catalog -> Attributes -> Manage attributes
Stock levels at product create/update
The module will update/set stock levels and propagate the data to all slave servers when product is updated/created on Primary server.
Stock levels at transaction/order
The current version of the module will pick the quantity from the server where order occurs and use that quantity as "lowest" quantity. This quantity will be propagated through other connected servers. We chose this approach as default in favor of performance. On servers where order placement concurrency is unlikely to occur, it works well and it's a good trade between accuracy and performance.
For setups where orders can occur simultaniously, the extension comes with a built-in functionality to check the lowest quantity accross all servers upon order. This however is turned off by default and requires a small code change to activate.
It's recommended to turn OFF cache during testing. To turn off WSDL cache go to System -> Configuration -> Magento Core API -> General Settings and set Enable WSDL cache to "No". Before testing you may also have to flush browser cache and any WSDL cache that is stored on your server. Often servers keep cached WSDL files so make sure to refresh server WSDL cache as well.
The module supports SSL however if you have password protected pages via .htaccess rules, it will fail to load the WSDL files. They are loaded by using an HTTP protocol and .htaccess passwords will prevent the module from reading the WSDL file, thus leading to unpredicted behaviour. To ensure that the module can read the WSDL file, open a browser where .htaccess passwords aren't remembered and try to load the WSDL URL. It should display a valid XML file.
Once everything works correctly, you can improve performace by doing a few simple steps. Thse would apply for both Primary and Slave servers.
Enable WSDL cache
To turn ON WSDL cache go to System -> Configuration -> Magento Core API -> General Settings and set Enable WSDL cache to "Yes".
Enable default Magento cache
To turn ON WSDL cache go to System -> Cache Management and enable both Web Services Configurations (api.xml and api2.xml)
Enable WSDL cache at code level
Edit file app\code\local\Anowave\SoapSync\Model\Wsdl\Abstract.php (line 92) change WSDL_CACHE_NONE to WSDL_CACHE_BOTH and flush Magento cache from backend
Turn OFF Schema Verification
Before propagating data to Slave servers, the module tries to compare attribute sets and attributes themselves to identify any differencies that may cause product to not save properly. If you're 100% sure that your servers are identical, you can turn off verification. This will speed up the whole process. To turn of Verification go to System -> Configuration -> SOAP Sync Settings and set Verify Schema to "No"
If you like this product, share it with your friends
Anowave is an extension developer for Magento 1.x and Magento 2.x platforms. We provide a wide range of premium extensions for our in-house and public clients. The extensions that we offer extend the capabilities of Magento and provide a bespoke functionality. They also fill some missing gaps in the functionality provided by the base platform and help customers in chosing Magento as prefered ecommerce platform.
The extensions that we offer are part of our full range Magento service which includes also a Premium Helpdesk where customers get to speak with actual software engineers and get their issues resolved without hussle. Premium labeled modules also include free installation, confiuration, testing etc.