# OpenMRS Platform 2.4.0 Released

**URL:** <https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455>\
**Category:** Platform\
**Created:** [December 22, 2020, 6:12pm UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455 "2020-12-22T18:12:06Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [December 22, 2020, 6:12pm UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455/1 "2020-12-22T18:12:06Z")

</div>

Hello community

Am pleased to announce that OpenMRS Platform 2.4.0 has been released. 😃

Major key highlights in this release include :-

- Replacing the fhir module with fhir2 module and support for R4

- Upgrading spring to 5.2.9

- Upgrading Hibernate to 5.4.21

- Adding support for Java 9, 10, 11, 12, 13, 14, 15 while not losing support for Java 8

- Upgrade to Liquibase 3.10.2 and avoid running legacy liquibase changesets

- Upgrade a number of other underlying libraries. e.g Log4j 2, JUnit 5, etc

- Add support for PostgreSQL versions 8.2 up to the latest 12

- Add support for all MySQL versions from 5.6 to the latest 8.0

Feel free to check it out [here](https://sourceforge.net/projects/openmrs/files/releases/OpenMRS_Platform_2.4.0/) plus the [release notes](https://wiki.openmrs.org/display/RES/Platform+Release+Notes+2.4.0). Many thanks to everyone who has contributed to making this a success ie the developers.testers and implementations. Its been a great pleasure working with you all.

Best Regards

Cliff

---

<div class="post-metadata">

**Author:** ![jwnasambu](https://talk.openmrs.org/user_avatar/talk.openmrs.org/jwnasambu/32/13543_2.png) [@jwnasambu](https://talk.openmrs.org/u/jwnasambu)\
**Post date:** [December 22, 2020, 6:16pm UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455/2 "2020-12-22T18:16:23Z")

</div>

Congratulation @gcliff

---

<div class="post-metadata">

**Author:** ![sharif](https://talk.openmrs.org/user_avatar/talk.openmrs.org/sharif/32/11982_2.png) [@sharif](https://talk.openmrs.org/u/sharif)\
**Post date:** [December 22, 2020, 6:43pm UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455/3 "2020-12-22T18:43:19Z")

</div>

Congratulations @gcliff well done 👌

---

<div class="post-metadata">

**Author:** ![dkayiwa](https://talk.openmrs.org/user_avatar/talk.openmrs.org/dkayiwa/32/179_2.png) [@dkayiwa](https://talk.openmrs.org/u/dkayiwa)\
**Post date:** [December 22, 2020, 6:54pm UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455/4 "2020-12-22T18:54:23Z")

</div>

@gcliff the release notes say the exact opposite of the actual work done in this release.

---

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [December 22, 2020, 7:18pm UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455/5 "2020-12-22T19:18:40Z")

</div>

@dkayiwa i have fixed it

---

<div class="post-metadata">

**Author:** ![dkayiwa](https://talk.openmrs.org/user_avatar/talk.openmrs.org/dkayiwa/32/179_2.png) [@dkayiwa](https://talk.openmrs.org/u/dkayiwa)\
**Post date:** [December 22, 2020, 7:32pm UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455/6 "2020-12-22T19:32:02Z")

</div>

@gcliff not yet. Take a look at the technical roadmap: [Technical Roadmap - Documentation - OpenMRS Wiki](https://wiki.openmrs.org/display/docs/Technical+Roadmap)

---

<div class="post-metadata">

**Author:** ![emiriga](https://talk.openmrs.org/user_avatar/talk.openmrs.org/emiriga/32/12398_2.png) [@emiriga](https://talk.openmrs.org/u/emiriga)\
**Post date:** [December 22, 2020, 8:44pm UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455/7 "2020-12-22T20:44:15Z")

</div>

Great work @gcliff.

---

<div class="post-metadata">

**Author:** ![grace](https://talk.openmrs.org/user_avatar/talk.openmrs.org/grace/32/16942_2.png) [@grace](https://talk.openmrs.org/u/grace)\
**Post date:** [December 23, 2020, 4:46am UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455/8 "2020-12-23T04:46:20Z")

</div>

What a massive effort!! Huge kudos to you @gcliff and the many others who made this happen, such as @dkayiwa, @tendomart, @wolf, @mogoodrich, @mksd, @k.joseph, @herbert24, @sharif, @jwnasambu, @mozzy, @achilep, @samuel34, @burke, @aman, @irenyak1, @reagan, and the many others I may be missing here.

---

<div class="post-metadata">

**Author:** ![dkayiwa](https://talk.openmrs.org/user_avatar/talk.openmrs.org/dkayiwa/32/179_2.png) [@dkayiwa](https://talk.openmrs.org/u/dkayiwa)\
**Post date:** [December 23, 2020, 11:37am UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455/9 "2020-12-23T11:37:16Z")

</div>

@gcliff it would also be great for the release announcement to include the major highlights that one should expect in this release.

---

<div class="post-metadata">

**Author:** ![dkayiwa](https://talk.openmrs.org/user_avatar/talk.openmrs.org/dkayiwa/32/179_2.png) [@dkayiwa](https://talk.openmrs.org/u/dkayiwa)\
**Post date:** [December 24, 2020, 2:47pm UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455/10 "2020-12-24T14:47:13Z")

</div>

@gcliff are you done with all the release steps?

---

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [December 24, 2020, 3:36pm UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455/11 "2020-12-24T15:36:30Z")

</div>

yes am done

---

<div class="post-metadata">

**Author:** ![dkayiwa](https://talk.openmrs.org/user_avatar/talk.openmrs.org/dkayiwa/32/179_2.png) [@dkayiwa](https://talk.openmrs.org/u/dkayiwa)\
**Post date:** [December 24, 2020, 3:50pm UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455/12 "2020-12-24T15:50:10Z")

</div>

@gcliff did we delete the step for creating a blog about the release?

---

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [December 24, 2020, 6:31pm UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455/13 "2020-12-24T18:31:31Z")

</div>

@dkayiwa have created it [here](https://gitacliff48.medium.com/openmrs-platform-2-4-0-released-41fdd40d5a7b)

---

<div class="post-metadata">

**Author:** ![dkayiwa](https://talk.openmrs.org/user_avatar/talk.openmrs.org/dkayiwa/32/179_2.png) [@dkayiwa](https://talk.openmrs.org/u/dkayiwa)\
**Post date:** [December 24, 2020, 7:03pm UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455/14 "2020-12-24T19:03:30Z")

</div>

I thought it should be here: [https://openmrs.org/](https://openmrs.org/)

Did we change the instructions?

---

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [December 24, 2020, 7:25pm UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455/15 "2020-12-24T19:25:22Z")

</div>

i dont think we have the instructions for the platform to create the blog post , i have been going through the [platform release process](https://wiki.openmrs.org/display/docs/OpenMRS+Platform+Release+Process) but i haven’t seen the step for creating a blog about the release (correct me if am wrong on this)

Thanks

---

<div class="post-metadata">

**Author:** ![dkayiwa](https://talk.openmrs.org/user_avatar/talk.openmrs.org/dkayiwa/32/179_2.png) [@dkayiwa](https://talk.openmrs.org/u/dkayiwa)\
**Post date:** [December 24, 2020, 7:42pm UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455/16 "2020-12-24T19:42:50Z")

</div>

I have just noticed that we have it for the [reference application release process](https://wiki.openmrs.org/display/docs/OpenMRS+Reference+Application+Release+Process) but not platform. Do you mind copying the exact same instructions from there reference application release process page and paste them into the [platform release process page](https://wiki.openmrs.org/display/docs/OpenMRS+Platform+Release+Process)? Then do the needful. 🙂

---

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [December 24, 2020, 7:44pm UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455/17 "2020-12-24T19:44:56Z")

</div>

let me change that

---

<div class="post-metadata">

**Author:** ![alexmigabo](https://talk.openmrs.org/letter_avatar/alexmigabo/32/6_22734026db12803ebb3e059622ac3534.png) [@alexmigabo](https://talk.openmrs.org/u/alexmigabo)\
**Post date:** [July 9, 2021, 4:03pm UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455/19 "2021-07-09T16:03:37Z")

</div>

hello im seing this after running the jar file of standalone 2.3.0 The following error occurred at startup: Error occurred while trying to get the updates needed for the database. Unable to get a connection to the database. Please check your openmrs runtime properties file and make sure you have the correct connection.username and connection.password set java.lang.RuntimeException: Error occurred while trying to get the updates needed for the database. Unable to get a connection to the database. Please check your openmrs runtime properties file and make sure you have the correct connection.username and connection.password set at org.openmrs.util.DatabaseUpdater.getUnrunDatabaseChanges(DatabaseUpdater.java:630) at org.openmrs.util.DatabaseUpdater.getUnrunDatabaseChanges(DatabaseUpdater.java:587) at org.openmrs.util.DatabaseUpdater.updatesRequired(DatabaseUpdater.java:252) at org.openmrs.web.Listener.setupNeeded(Listener.java:217) at org.openmrs.web.Listener.contextInitialized(Listener.java:179) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5197) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5720) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1705) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1695) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.Exception: Unable to get a connection to the database. Please check your openmrs runtime properties file and make sure you have the correct connection.username and connection.password set at org.openmrs.util.DatabaseUpdater.getLiquibase(DatabaseUpdater.java:361) at org.openmrs.util.DatabaseUpdater.getUnrunDatabaseChanges(DatabaseUpdater.java:615) … 13 more Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.Util.getInstance(Util.java:408) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861) at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2094) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2019) at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:776) at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:386) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330) at java.sql.DriverManager.getConnection(DriverManager.java:664) at java.sql.DriverManager.getConnection(DriverManager.java:247) at org.openmrs.util.DatabaseUpdater.getConnection(DatabaseUpdater.java:423) at org.openmrs.util.DatabaseUpdater.getLiquibase(DatabaseUpdater.java:358) … 14 more Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create socket factory ‘com.mysql.management.driverlaunched.ServerLauncherSocketFactory’ due to underlying exception: at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.Util.getInstance(Util.java:408) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861) at com.mysql.jdbc.MysqlIO.createSocketFactory(MysqlIO.java:3330) at com.mysql.jdbc.MysqlIO.(MysqlIO.java:296) at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2186) at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2035) … 28 more Caused by: java.lang.ClassCastException: com.mysql.management.driverlaunched.ServerLauncherSocketFactory cannot be cast to com.mysql.jdbc.SocketFactory at com.mysql.jdbc.MysqlIO.createSocketFactory(MysqlIO.java:3328) … 31 more

See the server log for full output.

---

<div class="post-metadata">

**Author:** ![dkayiwa](https://talk.openmrs.org/user_avatar/talk.openmrs.org/dkayiwa/32/179_2.png) [@dkayiwa](https://talk.openmrs.org/u/dkayiwa)\
**Post date:** [July 10, 2021, 6:02pm UTC](https://talk.openmrs.org/t/openmrs-platform-2-4-0-released/31455/20 "2021-07-10T18:02:18Z")

</div>

Share the full server log via [pastebin.com](http://pastebin.com)
