A POC completed successfully by the end of GSoC 2012. Installing the developed module enables sync for your OpenMRS databases.
1. Setup two OpenMRS instances
- Done. Completed as specified on Wiki - Multiple Instances with the renamed .wars of omrsroot and omrsclient running on 2 ports for jetty. Independent two databases and 'omrsroot' and 'omrsclient' for sync, and having individual application data directories.
Steps to setup a root instance and a client instance for the project demo purpose
Folders referred to steps given below.
OpenMRS checkout location=OpenMRS-1.x.x
Step 1: First rename your existing Application data directory to something else so that the setup will run all new. This applies if you have already been using OpenMRS before this trial.
Set up OpenMRS using the Advanced option where you can name your own database. Name the database to rootdb.
Note: This path is relative to the new placement of root-runtime.properties. (Additionally, you may paste the same runtime.properties to OpenMRs-1.x.x/webapp/target where the .war actually resides, for safety :) )
to see your working root OpenMRS instance!
And name your new database to clientdb
Now the client is all setup!
2. Configure SymmetricDS for the two OpenMRS instances. Then Synchronize the Person table. (As with the 2.x release of Symmetric)
- Done. (minor issue reported)
- Configuring using properties files** omrsclient.properties** omrsroot.properties
- Inserting symmertic specific tables to root database using an .sql file. openmrs_sds_sql** Channels** Triggers** Routers** Trigger-router links
- Registering and starting nodes
- Send loads, push/(and) pull data.
3. IDatabaseWriterFilterAdapter extension point (As with the 3.x release of Symmetric)
- Configure personal settings such as ip, port for Symmetric to run, your database specific property settings on the root and client property files.
- Changes to node identity names, nodegroup names should be reflected on the SQL script on omod/src/main/webapp as well.
- Prior to installing your omod, include the following global properties to your database.
- syncsds.symmetric.nodeGroup for root only : ‘root’
- syncsds.symmetric.nodePort for root : ‘8087’, for client : ‘8835’ (changes to values should result on property file configurations too)
- syncsds.jettyUser for OpenMRS jetty users: ‘true’, for Tomcat users: ‘false’
- Deploy the OpenMRS war giving the following JVM option _ _
- eg: (for Jetty users)
8. Youtube Video of synchronizing few patients
Please find the video on the following url \[0\]
_\[0\] _[You can find a brief demonstration on  and a much more descriptive version on  Wiki Markup
The testing and documenting for early stages will go inline with development.
23rd April - 21st May
Community Bonding Period
21st May - 31st May
Bi-directionally synchronize person table on 2 OpenMRS instances.
1st June - 10th June
Develop OpenMRS module to embed SymmetricDS jar.
11th June - 9th July
Develop means to identify & resolve conflicts arising through bi- directional synchronization.
Completed for a subset of tables
9th July - 16th July
Configure SymmetricDS for synchronization of all tables in OpenMRS schema. Include this in the on-going module.
16th July - 5th August
Develop the UIs for authenticating & configuring SymmetricDS.
Allocated for troubleshooting module
15th August - 13th August
Test and document module
13th August - 20th August
Getting feedback from community. Test on multiple physical nodes for network latency and other practical issues.
Tested on 2 physical nodes
Client & root specific configuration to get OpenMRS databases setup for Symmetric running on a new Jetty instance.