Installation:3.0 Server and Store

Downloading Binaries
Binaries can be downloaded from our Sourceforge project page here.

Building from Source
To build Indivo from source, you'll need to install Java, Maven, and Subversion. Instructions/specifications for each follow.

Install Java
Indivo requires Java 5. You can download the Java 5 SDK from Sun Microsystems here. (The Maven build process will fail when using Java 6)

Installation instructions are also available on the Java website.

For Microsoft Windows users, you can check out our Installing And Configuring Java - Windows page.

Install Maven
The Apache Maven build environment is a scriptable tool that is used in the building of Indivo. Indivo requires Maven version 2.0.4 or greater. Download the latest copy of Maven here.

Installation instructions are provided on the Maven website's download page.

For Microsoft Windows users, you can check out our Installing and Configuring Maven - Windows page.

Install Subversion
Subversion is a source code repository used to manage the software assets of the Indivo project. To retrieve the source code from the repository, download the latest copy of the Subversion client here.

For the Windows platform, follow the link for the prepackaged binaries here and download the file named svn-1.3.2-setup.exe or later.

Once installed, open a command prompt and type The first part of the message printed to the screen should contain the version of the Subversion command-line client that you installed.

Download the code
All source code is available for public download and browsing. You can browse the source code on the web through our Subversion repository here. There are three subdirectories: branches, tags, trunk.


 * branches contains all development branches (both active and inactive) that
 * tags contains all tags for Indivo milestones (releases, etc)
 * trunk contains the main development trunk

You can also use Subversion to download the code onto your local machine. From the command-line, execute the command:

to check out the trunk of the code base and place it in the indivo directory.

Similarly, to check out a specific tag like the most recent release execute the command:

During checkout, you may see a prompt regarding our repositories SSL certificate. The prompt would read:

Choose 't' or 'p' to continue with the check out.

Build the Code
In the base directory of your Indivo checkout, run Maven's install command:

Maven will download all the necessary third-party libraries, compile all the code, and package all the binaries referenced below, except for the UI distributable.

At the end of the  execution, you should see something like the following in your console:

All packages can be found in the various target directories created by Maven.

Store Installation
$ cd iostore/berkeleydb/core/ $ mvn assembly:assembly
 * Assemble the IO Store package.

You should now see indivo-iostore-berkeleydb-core-3.0-bin.tar.gz in the target/ directory.

$ tar -xzvf indivo-iostore-berkeleydb-core-3.0-bin.tar.gz
 * Copy the IO Store package to your server and extract their contents.

$ mv indivo-iostore-berkeleydb-core-3.0-bin /usr/local/indivo-store $ cd /usr/local/indivo-store/bin
 * Move the IO Store folder to a suitable location and navigate to its  directory.

$ chmod a+x *.sh
 * Make sure all the scripts are executable.

$ ./startStore.sh OSStoreServer /usr/local/indivo-store/ \ OSStoreServerAudit /usr/local/indivo-store/ &
 * Start the IO Store in the background.

The 3.0 release also includes a Windows batch file named startStore.bat and it is equivalent to startStore.sh.

If starting the store in the foreground, you may see log4j warning messages. This simply indicates that you have not yet configured log4j, which is entirely at your discretion.

Keystore & Administrator Creation
$ cd utils $ mvn assembly:assembly
 * Assemble the Utils package.

You should now see indivo-utils-3.0-bin.tar.gz in the target/ directory.

Creating a keystore is only necessary if you wish to encrypt the data in your Indivo store. While this is highly recommended for production, you may want to skip this step during your initial development/evaluation install.

$ tar -xzvf indivo-utils-3.0-bin.tar.gz
 * Copy the Utils package to your Server (the machine where you will be deploying the servlet, see below Server Installation) and extract its contents.

$ cd indivo-utils-3.0-bin/bin
 * Navigate to the Utils  directory.

$ chmod a+x *.sh
 * Make sure all the scripts are executable.

$ ./createKeystore.sh keystoreLocation keystorePasswd keyAlias keyPasswd hmacKeyAlias hmacKeyPasswd
 * Create a keystore for your IO Store.


 * keystoreLocation : Physical location where your new keystore will be created, e.g. ../keystore.jks
 * keystorePasswd : Password for your keystore
 * keyAlias : Alias of the encryption key
 * keyPasswd : Password for the encryption key
 * hmacKeyAlias : Alias of the HMAC key
 * hmacKeyPasswd : Password for the HMAC key

$ keytool -list -keystore keystoreLocation -storetype jceks
 * Verify that there are two keys in your new keystore.

$ ./createAccount.sh recordStoreClassname storeLocation auditStoreLocation creatorID creatorName \ creatorRole newAccountID newAccountPassword newAccountRole keystoreLocation \ keystorePasswd keyAlias keyPasswd cipherAlgorithm hmacAlgorithm hmacKeyAlias hmacKeyPasswd
 * With your IO Store running, create an administrator account. If you chose not to encrypt the data in your Indivo store, you can omit the keystore arguments (all arguments starting with keystoreLocation).


 * recordStoreClassname : The class which defines how the record will be written to the IO Store, typically org.indivo.recordstore.indexedrs.IndexedRecordStore
 * storeLocation : The URL to your IO Store, e.g. //localhost/OSStoreServer
 * auditStoreLocation : The URL to your Audit Store, e.g. //localhost/OSStoreServerAudit
 * creatorID : Indivo ID of the user creating this account, in e-mail address format. This account need not exist.  When self-creating your first administrator, for example, feel free to use something artificial like creator@indivohealth.org.
 * creatorName : Full name of the user creating this account. When self-creating, this value can be anything you like.
 * creatorRole : Role of the user creating this account. When self-creating, this value can be anything you like.
 * newAccountID : Indivo ID of the user to be created, in e-mail address format.
 * newAccountPassword : New password for the user to be created
 * newAccountRole : Role of the user to be created, e.g. administrator, patient, provider, agent
 * keystoreLocation : Physical location of your Java keystore (created above)
 * keystorePasswd : Password for your keystore
 * keyAlias : Alias of the encryption key
 * keyPasswd : Password for the encryption key
 * cipherAlgorithm : e.g. AES/CBC/PKCS5Padding
 * hmacAlgorithm : e.g. HmacSHA1
 * hmacKeyAlias : Alias of the HMAC key
 * hmacKeyPasswd : Password for the HMAC key


 * If you don't see any errors, you now have a store with an (encrypted) administrator account.

General instructions

 * 1) Download the war from Sourceforge.
 * 2) Deploy the war by following the instructions that your application server provides for war deployment
 * 3) Start your application server
 * 4) Verify that the server is deployed by directing a browser to the URL that you deployed your war to. It should look like http://localhost:8080/indivo-server-servlet-demo/IndivoServlet.  You should see a message in your browser that reads "I don't respond to GET!"  This is the appropriate response.

Windows users, check out our instructions for deploying the Indivo server on Tomcat.

Advanced Configuration
If you created an encrypted account in your store, you will need to configure the Action Responders to utilize encryption.


 * 1) Edit the WEB-INF/classes/responders.xml file in your deployed war
 * 2) In each responder element, you must edit the StoreConfig and the AuditerConfig by adding a StoreExtensionConfig element. This should be the last element in each *Config. An example of a StoreExtensionConfig for encryption is below:

You'll also need to define the "conf" namespace. You can do this by adding

xmlns:conf=" http://indivo.org/xml/config "

once in your responderConfig element's start tag or in every StoreExtensionConfig elements' start tag.