Thank you for your interest in contributing to the Open Integration Engine project. Contributions are vital to the continued growth and success of the project, and we welcome all forms of participation, whether you are a developer, a documentation contributor, or a user providing feedback.
The contribution process is straightforward and can be completed in a few simple steps:
Before making any changes, please open an issue in the GitHub Issues Tracker. This step helps us discuss the problem or feature before work begins, ensuring alignment and reducing redundant efforts.
Start by forking the Open Integration Engine GitHub repository to your own GitHub account.
Clone your fork locally to your development environment:
git clone git@github.com:OpenIntegrationEngine/engine.gitCreate a new branch for your feature or bug fix:
git checkout -b feature/your-feature-nameThe current Open Integration Engine has different Java version requirements for build time and runtime:
- Build SDK: Java 8 (to maintain compatibility with the current codebase)
- Runtime: Java 17 or higher (required for server and client execution)
Install SDKMAN and use it to manage both Java versions:
# Install SDKMAN (if not already installed)
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/candidates/java/current/bin/java"
# Install Java 8 for building
sdk install java 8.0.442.fx-zulu
# Install Java 17 with JavaFX for runtime (required for client GUI)
sdk install java 17.0.17.fx-zulu
# Install Apache Ant
sdk install ant 1.10.14Set build-time Java:
sdk use java 8.0.442.fx-zuluVerify versions:
java -version # Should show Java 8
ant -version # Should show Ant 1.10.14Important: After building with Java 8, you'll need Java 17+ with JavaFX (
17.0.17.fx-zuluor higher) to run the server and client. The runtime Java is specified inconf/custom.vmoptionsfor the server andoieclient.vmoptionsfor the client.
The project uses Apache Ant as the build system. All build orchestration is managed from the server directory.
Full Build (Development)
cd server
ant -f mirth-build.xml -DdisableSigning=trueNote: This build takes approximately 2 minutes 20 seconds on a MacBook Pro M4 Pro.
This will:
- Build Donkey (message processing engine)
- Build Server extensions
- Build Client
- Build Manager
- Build CLI (Command Line Interface)
- Run all tests
- Create the complete setup in
server/setup/
Fast Build (Skip Tests)
cd server
ant -f mirth-build.xml -DdisableSigning=true -DdisableTests=trueNote: This build takes approximately 10-11 seconds on a MacBook Pro M4 Pro.
Use this for faster builds during development when you don't need to run the full test suite.
Full Build (Signed - for releases)
cd server
ant -f mirth-build.xmlCreate Distribution Package
cd server
ant -f mirth-build.xml distAfter building, the complete application is available in server/setup/.
The server is the core integration engine that processes messages and manages channels:
cd server/setup
./oieserverYou should see output similar to this:
Info: Found suitable java version specified by the -java-cmd directive in '/Users/michel/Developer/misc/engine/server/setup/conf/custom.vmoptions'
Starting Open Integration Engine...
INFO 2025-11-10 09:49:41.028 [Main Server Thread] com.mirth.connect.server.Mirth: Open Integration Engine 4.5.2 (Built on novembre 10, 2025) server successfully started.
INFO 2025-11-10 09:49:41.030 [Main Server Thread] com.mirth.connect.server.Mirth: This product was developed by NextGen Healthcare (https://www.nextgen.com) and its contributors (c)2005-2024.
INFO 2025-11-10 09:49:41.030 [Main Server Thread] com.mirth.connect.server.Mirth: Open Integration Engine contributors (c)2025.
INFO 2025-11-10 09:49:41.030 [Main Server Thread] com.mirth.connect.server.Mirth: Running OpenJDK 64-Bit Server VM 17.0.17 on Mac OS X (15.6.1, aarch64), derby, with charset UTF-8.
INFO 2025-11-10 09:49:41.031 [Main Server Thread] com.mirth.connect.server.Mirth: Web server running at http://192.168.1.16:8080/ and https://192.168.1.16:8443/By default, the server requires Java 17 or higher. The runtime is configured via conf/custom.vmoptions.
Server VM Options:
oieserver.vmoptions- Main configuration file (includes other files)conf/base_includes.vmoptions- Base JVM settingsconf/default_modules.vmoptions- Java 9+ module exports/opensconf/custom.vmoptions- User customizations (add your-java-cmdhere)
The Administrator client is the GUI for managing the integration engine:
cd server/setup
./oieclientYou should see output similar to this:
Info: Found suitable java version specified by the -java-cmd directive in '/Users/michel/Developer/misc/engine/server/setup/oieclient.vmoptions'
Starting Open Integration Engine Administrator Client...After loadingm the client, you will see the login screen:

After logging in (default username/password: admin/admin), you will see the main dashboard:

You can view the About window from the Help menu:

Note: The client was previously launched via Java Web Start (.jnlp files), which was deprecated in Java 9 and removed in Java 11. The oieclient script replaces this mechanism, avoiding the need for third-party tools like OpenWebStart while providing better control over the Java runtime and JVM options.
The client requires Java 17+ with JavaFX support to run the GUI. The runtime is configured via oieclient.vmoptions.
Client VM Options:
oieclient.vmoptions- Configuration file (add your-java-cmdand JVM options here)
Note: Both scripts automatically discover Java in this priority order:
OIE_JAVA_PATHenvironment variable (override)-java-cmddirective in respective.vmoptionsfile (preferred)JAVA_HOMEenvironment variablejavacommand in system PATH
After building, you can create a distribution tarball:
On Linux (with GNU tar):
tar czf openintegrationengine.tar.gz -C server/ setup --transform 's|^setup|openintegrationengine/|'On macOS (BSD tar - no --transform support):
cd server
tar czf ../openintegrationengine.tar.gz setupOr, to rename the directory in the tarball:
cd server
cp -r setup openintegrationengine
tar czf ../openintegrationengine.tar.gz openintegrationengine
rm -rf openintegrationengineAlternatively, install GNU tar on macOS:
brew install gnu-tar
gtar czf openintegrationengine.tar.gz -C server/ setup --transform 's|^setup|openintegrationengine/|'If needed, you can build specific components separately:
# Build Donkey only
cd donkey
ant build
# Build Server only
cd server
ant compile
# Build Client only
cd client
ant -f ant-build.xml build
# Build CLI only
cd command
ant build
# Build Manager only
cd manager
ant -f ant-build.xml buildAfter a successful build, you'll find:
server/setup/- Complete application setup ready to runserver/build/- Build artifactsserver/dist/- Distribution packages (if you ran thedisttarget)
Implement the necessary changes, ensuring they align with the project’s coding standards and practices.
Before submitting your changes, please ensure that all tests pass and that your changes work as expected in your local environment.
Once your changes are ready, push them to your fork and create a draft pull request (PR) from your branch to the main branch of the project. Draft PRs help indicate that the work is in progress.
Mark the PR as "Ready for review" only when it is actually complete and ready for feedback. Include a brief description of the changes and reference the related issue.
If you encounter a bug, please report it using the GitHub Issues Tracker:
- Search for existing issues to check if the problem has already been reported.
- If the issue is not listed, create a new issue with the following information:
- A clear and descriptive title.
- Steps to reproduce the issue.
- The expected vs. actual behavior.
- Any relevant logs, error messages, or screenshots to help diagnose the issue.
If you would like to suggest a new feature or enhancement:
- Open a new issue in the GitHub Issues Tracker.
- Label the issue as a feature request.
- Provide a detailed description of the feature and the problem it aims to solve.
- If applicable, include examples or use cases to demonstrate the value of the feature.
- Be respectful and professional in all interactions.
- Provide constructive feedback and suggestions.
- Engage in discussions around pull requests and issues with an open and collaborative mindset.
By contributing to Open Integration Engine, you agree that your contributions will be licensed under the Mozilla Public License (MPL) 2.0.
Thank you for your interest in improving Open Integration Engine.