Synchronizing two Mendix applications using web services
Is there anyone that has experience in keeping two Mendix applications synchronized? I've got my problem reduced to the following simple dilemma. I got a HRM and CRM application both with the following domain model: They are being created, updated and deleted in both applications and they need to be synchronized. Problem Since 2.5 it is possible to receive whole instances as input for a web service. I thought then it would be possible to reduce the communication to one web service only. When an employee is updated in the HRM application it will trigger a web service of the CRM application giving the employee as input. Now I have the problem that the instance is stored in the database before you can do anything with it, so a new employee is created every time. It is of course possible to update the right employee and delete the just created employee afterwards, but this seems a little nasty to do. Is there anyone with a better solution? Thanks in advance! History In the 2.4 version of the framework, where only primitive date types could be used as input, I did this in a very ambiguous way. For instance: Employee is updated in the HRM application A event handler is triggered in which the HRM application calls a web service in the CRM application giving the unique identifier (URI) Then the CRM application calls a web service in the HRM application giving the same identifier as input, this web service will return the employee (with all its values) and is updated in the CRM application. This will result in a problem when the employee is updated by a microflow, because the transaction started by the microflow will only end after the two web services have finished. Only when the transaction is finished the update will be stored in the database. The effect is that the second web service responsible for sending the employee (with all it values) will send the instance as it was before the update. To fix this you have to reduce the communication to one web service only, but since you can only send primitive data types this will result in a very complex long microflow (think of for instance update reference set relations).
Roy van der Valk
The MendixIntegrator solves those kind of issues by keeping different applications actively in sync with each other (it works as versioning system with active pushing).
The MendixIntegrator currently synchronizes among other members, companies and several other stuff automatically between MxID, MxDN, the Appstore, Cloud Portal etcetera.