Here's a quick summary of being Platform release manager (from Darius Jazayeri):

  1. Pick some tickets and kick others out of the release
  2. Keep an eye on those tickets, looking for unassigned & those assigned with no movement, occasionally pinging folks to see what's needed to move things along.
  3. For tickets awaiting to be reviewed and whose reviews are small, you can go ahead and review them yourself.
  4. Pull together the release (an hour or two of time)
  5. Oversee subsequent releases as described on the Release Process page.


  1. OpenMRS ID
  2. GitHub account with write privileges to openmrs-core and openmrs-distro-platform (all /dev/4 and /dev/5, but can be granted temporarily on request)
  3. JIRA privileges for administering the OpenMRS Core project
  4. OpenMRS Word Press account
  5. Bamboo account,

If you need GitHub/JIRA privileges, Word Press/Bamboo account, open a ticket to request it.

Prior to Release

Prior to any release make an initial decision and post to Talk on what will be included in the release.

In most cases, this should be fairly clear from the Road Map; however, some projects may be a little behind schedule and a decision made whether they can be properly resourced/sped up to meet the release timeline or need to be bumped to a later release. You do not need to do all of the work of making these decision (the community should do that), but you should help ensure that the discussion occurs and you are the final arbiter for these decisions.

Features that have been committed, but are not going to be in the release need to be removed from the code.

If necessary, hold a Release Prioritization Meeting to prioritize tickets and finalize, which will be included in the release.

Release Types

Alpha Release

Before an alpha release, all New Feature tickets should either be Closed or at least in a Post Commit state. The same goes for Blocker tickets.

An alpha is a feature-complete release, but is not yet verified to be bug free.

An alpha version is indicated by appending "-alpha" to the version e.g. "2.2.0-alpha".

A release is ready to go from alpha to beta when preliminary testing has been completed and any bugs squashed (a minimum of rudimentary testing, ideally as many steps in the complete testing list as possible). If large bugs are found and squashed, "alpha.2", "alpha.3", etc. may be released to aid testers as needed.

Releasing additional alpha releases is up to the release manager. Going from alpha to beta does not require community discussion and is up to the release manager, but should be done only after the release manager has confirmed with testers that all known bugs have been squashed.

Beta Releases

A beta is a release that is ready to be tested by a larger group of people. Obvious bugs found in the alpha have been found and fixed.

A beta version is indicated by appending "-beta" to the version e.g. "2.2.0-beta".

Be sure to examine all outstanding tickets for the release milestone. By the time a beta release is being considered, all of the tickets assigned to the release milestone should have a clear trajectory (either be moved to a later release or have plans in place to address the issue by the full release).

Testing a Beta Release

Going from beta to a release candidate or full release requires that testing have been completed and the system formally exercised by at least one (ideally two or more) implementation.

The decision to go from beta to release candidate or final release should be led by the release manager but agreed by the developer community (via mailing list or dev call).

Release Candidates

A release candidate is only needed when non-trivial changes were required during the beta phase. If the beta release was tested and no significant changes were needed, then you can proceed directly to a full release.

A release candidate version is indicated by appending "-rc" to the version e.g. "2.2.0-rc".

Going from release candidate to full release requires that testing have been completed and the system formally exercised by at least two or more implementations. The decision to go from release candidate to final release should be led by the release manager but agreed by the developer community (via Talk).

Final Release

A true "Release" is deemed tested and worthy of production environments.

Review all existing tickets. Be certain that all tickets assigned to this release milestone have been addressed and that there aren't any straggling tickets for this milestone or previous milestones.

Maintenance Release

A maintenance release contains bug fixes and security patches for use between major releases, e.g., from 1.8.0 to 1.8.1. There is no branch to create. You just pick up where you left off in the current minor version series release branch.

Release steps

There's a number of steps to follow when doing an alpha/beta/rc/final/maintenance release. Please also refer to instructions for different types of releases (alpha/beta/rc/final/maintenance), which you can find in the next paragraphs.

If it is not a maintenance release, the release process should start from creating a maintenance branch.

  1. Create a new maintenance branch for openmrs-core and openmrs-distro-platform.
    1. Go to
    2. Click the "branch" dropdown.
    3. Type the new maintenance branch name e.g. "2.2.x".
    4. Click "Create branch '2.2.x' from master".
    5. Go to
    6. Repeat the steps from b to d.
  2. Create a new CI plan for openmrs-core and openmrs-distro-platform.
    1. Go to
    2. Click the "Create" dropdown at the top of the page and choose "Clone an existing plan".
    3. Select "OpenMRS Core Master" as plan to clone and give it e.g. "OpenMRS Core 2.2.x" name.
    4. Edit the newly created plan by going to the "Repository" tab and change the branch of openmrs-core repo to the newly created one e.g. "2.2.x".
    5. Click the "Create" dropdown at the top of the page and choose "Clone an existing plan".
    6. Select "OpenMRS Platform Master" as plan to clone and give it e.g. "OpenMRS Platform 2.2.x" name.
    7. Edit the newly created plan by going to the "Repository" tab and change the branch of openmrs-platform repo to the newly created one e.g. "2.2.x".
  3. Announce the upcoming Unsupported Releases (EOL) on Talk under the Software category for the line of two releases back. (e.g. if you're releasing 1.7.0, announce EOL for 1.4.x)

Steps to follow for all releases:

  1. Write a post that announces the release date and modules to be included on Talk under the Software category. Ask, if there is a need to release modules in order to include latest changes before the platform release.
  2. Verify that there are no unreviewed open tickets against the version to be released. You can use this query (adjust the fixVersion).
    1. Review/close tickets that are in Post Commit Review.
    2. Look carefully at In Progress tickets to see, if some of them have not been committed to a branch (back ported) already. You need to review/close such tickets as well. You can easily check, if any code was committed by searching for an issue id on a GitHub comparison page at (adjust the versions). 
    3. Move tickets to the next version that are In Progress or in Pre-Commit Review stage (use Manage Versions admin page for bulk moving of tickets, see the 4.a. step below).
  3. Create a new version for the next release. Using the Manage Versions in
  4. Release the current version using the above admin page.
    1. When you release a version it will allow you to move non-closed tickets to the next version.
  5. Download the latest CIEL for OpenMRS 1.9.x (use 1.9.x regardless of the release version) as described here. Upload the version to our maven repository to be used in standalone by running (adjust the version and the file parameters to match the downloaded version of CIEL):

    mvn deploy:deploy-file -DgroupId=org.openmrs.contrib -DartifactId=ciel-dictionary -Dversion=1.9.9-20170409 -Dpackaging=zip -DrepositoryId=openmrs-repo-contrib -Durl=

  6. Update the CIEL version in standalone's pom.
  7. Check if the branch to be released is green at and
  8. Do some last minute rudimentary testing as described in Testing Releases on snapshot artifacts published by CI.
  9. Release openmrs-core from CI by running the Release stage of the latest build for the corresponding branch at e.g. (click the Play icon next to the Release stage on the left menu) 
  10. Once the release build turns green, release the corresponding platform branch from CI at Click on the green branch build number and run the Release stage. Override the "maven.release.version" variable to make sure it matches the release version of core.
  11. In the file listing page on Sourceforge, open the recently released version, click the info "i" button next to the standalone to expand the details of the uploaded ZIP file. For "Download Button", type "OpenMRS Platform 2.0.5 Standalone". Under "Default Download For:" check all the option boxes. Click "Save" to save the settings.

  12. Create the release notes page as a child of Platform Release Notes and include JIRA filters showing all closed tickets (e.g. Platform Release Notes 1.11.1)
  13. Create a help desk case with at a minimum of one working day prior to the scheduled release providing download links. DO NOT mark Impact as anything other than "Routine." 
    Use the following template for description (replace 2.0.5 with the correct version, the release date & time and the JIRA url, which you can determine from

    In preparation for the release of OpenMRS Platform 2.0.5 on 21/04/2017 10:00 UTC please do:
    1. Update SCRAP to allow automated bug reports to be received for Platform 2.0.5 found in JIRA at
    2. Update to allow bug reports for Platform 2.0.5.
    (Do not include the rest, if it is not the latest LTE branch release)
    3. Update to point to Platform 2.0.5 standalone at 
    4. Update to point to Platform 2.0.5 war at

  14. Once helpdesk confirms all is set for the release, create a blog post on using your WordPress account. If you need an account, create a help desk case at
  15. Write a post that announces the released on Talk under Software category.
  16. With the exception of pre-releases, you need to release the version in jira, you will probably need admin privileges to do this, you can ask for them through the help desk or ask somebody with the privileges to help you release it in JIRA. 
    1. Go to JIRA
    2. Click the Projects menu item and select OpenMRS Core (TRUNK) from the dropdown.
    3. You should see a menu on the left panel on the page that gets loaded, select Releases.
    4. In the Actions column click the row matching the version you're releasing and select Release from the little pop up menu.
    5. Set the release date and click the Release button, note that you might have to move any unresolved issues to the next release.

Troubleshooting (when not using CI for releasing)