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 2.x installations.
This extension allows for real time sync between two or more Magento 2.x installations. It has the same features as per the one for Magento 1.x.
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 2.x. installations.
Built-in support for simple and configurable products.
If you're using multiple Magento 2.x 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.
This is an extension for Magento 2.x. It's not compatible with Magento 1.x or older versions of the platform. If you're running Magento 1.x check out the version for Magento 1.x. available at - http://www.anowave.com/marketplace/magento-extensions/magento-sync-products-and-inventory-via-soap/
In this release the only requirement is to have the same attributes & attribute sets between all Magento 2.x installations. Automatic set and/or attributes synchronization is not supported.
Unlike other similar solutions, this extension allows for syncing two or more Magento 2.x installations running on different servers. It also keeps quantities consistent amongst each Magento 2.x 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.
Important: Unlike the module for Magrento 1.x, the verification implemented here is limited due to active bugs in Magento 2.x (https://github.com/magento/magento2/issues/4630). This is likely to be resolved soon, but for the time being, the module will not verify whether attribute options match across different slave servers.
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.
This extension can be installed in a few minutes, by going through the following steps:
If you need to upgrade the database, run the following command line:
php -f bin/magento setup:db-schema:upgrade
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 authorization token.
First an User role needs to be added. Login to the Magento 2.x Admin Panel and navigate to System > Permissions > User 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 password secure enough. The second tab on the left is called User Role, and that's where you select the role earlier created.
Create a new Integration
To create new go to System -> Extensions -> Integrations -> Add New Integration and enter the required details. Under API tab select "All" resources.
Once integration is created you will get a Private Authorization Token. This token is important so copy it somewhere
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
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.
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 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\Anowave\SoapSync\Model\Wsdl\Endpoint.php (line 85) 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 Stores -> 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.