M2E Pro allows observing data changes triggered by various Magento Core Models. However, very frequently Magento Products, Categories, Attributes, etc. are updated without the usage of Magento Core Standard Functionality (Magento Core Models), so M2E Pro may not detect these changes.
M2E Pro may not detect changes if:
Data is manipulated via direct SQL requests (Direct SQL injections).
Changes made by side models of a side module.
Changes made through Magento API.
Any other approach that is not using a Magento Core Functionality.
If a data in your Magento system gets updated by any of above-described methods, there is a requirement to notify M2E Pro explicitly. There are 2 options to do that:
Object method - uses all variations of M2E Pro (slower).
Structural model - only tracks data changes in existing Magento Products (fast).
Models can be found in your Magento File system: app/code/Ess/M2ePro/PublicServices.
Object method notifies M2E Pro about all Magento Product changes and facilities:
automated addition/removal of products from M2E Pro Listings (Auto Add/Remove Rules);
synchronization (List, Relist, Stop and all available options of Revise Rules);
tracking of changes in all attributes used in Magento products settings.
Usage of Object Model(sample):
A snippet of the code above demonstrates the creation of an M2E Pro Object Model. Then 2 products are registered and changes to these products are observed in 2 different ways. Once products have been registered, data for these products can be manipulated using SQL injections or any other method.
After a data is changed, the method applyChanges() must be called. While method applyChanges() is running, M2E Pro will automatically observe all the changes that have originated outside of Magento Core Models.
For multiple Magento product data change:
create M2E Pro Object Model
register in products to be updated Products
trigger method applyChanges()
It is not recommended to create M2E Pro Pro Object models for each product individually.
The Object Method is not suitable for a large number of product changes (i.e. in 10.000’s) because Object Method is very resource-consuming. It observes all automatic features of M2E Pro and slows down your code execution making import/update tools (if any) to work at unsatisfactory speed.
Structural Model notifies M2E Pro about changes made to a particular attribute/option (only price, quantity, status) of a Magento Product. This model is different from the Object method:
Object Method catches changes from the moment of registration to the moment of execution.
Structural Method requires only notification confirming changes of a particular product data.
Structural Method triggers only the following automatic features: List, Relist, Stop, Price/Quantity Revise Rules of Synchronization Policy.
Usage of the Structural Model (sample):
A snippet of the code above demonstrates usage of an M2E Pro Structural Model in respect to Price, QTY, Status changes.
M2E Pro Structural Model usage:
create an instance of M2E Pro Structural model
make changes to Magento Products data (i.e. direct SQL requests)
reflect these changes in the model
trigger method applyChanges() of the structural model
It is not recommended to create M2E Pro Pro Structural models for each product individually.
Always utilize the Structural model for a high number of Magento products’ changes. This method works fast (vs Object method) and not resource-consuming. We do not recommend to use this method if your system is making use of all automatic features of M2E Pro.
By combining M2E Pro Object method and Structural model, you can greatly improve the resource consumption of your system(s) and completely avoid using Track Direct Database Changes function of M2E Pro.