The general SORMAS configuration is stored in the sormas.properties file that you can find in your payara domain folder. When you set up a new SORMAS server, please make sure to go over all entries in that file and adjust their values if necessary. Each property has an explanation telling you its purpose, and some of them also have a default value that you can use to revert the changes you've made.
Most of these properties are commented (indicated by a # in front of their name and value), which means that the default value will automatically be used (e.g. the path to temporary files on the server) or the associated feature will not be used at all (e.g. the custom branding properties or the configuration of an external symptom journal). Some properties however are not commented, but also don't have a default value. It is strongly recommended to enter values for these properties because they are required for some parts of SORMAS to work correctly, or because they are very specific to your individual SORMAS instance. This especially applies to the country.locale and country.name properties, which will cause serious problems while using the application if left empty.
Important: The sormas.properties file contains all properties that existed in the SORMAS version that you initially installed on your server. New properties added in more recent SORMAS versions are not automatically added! If you're operating a SORMAS server, we strongly suggest to read the release notes of new versions. If properties have been added to this file, they will be communicated in these notes so that you can add them to your properties file.
Server Configuration File Properties
This is a list of options contained in the sormas.properties file that can be used to configure and customize SORMAS.
Country Settings
country.locale
The default locale each user will be using as long as they don't overwrite it in their settings. It impacts both the language that SORMAS is displayed in as well as the date and number formats. This property must be filled in for SORMAS to work properly. If it's not specified, the application will try to fall back to English.
Default: en
Examples: en, en-US, en-NG, de-DE, fr-FR
country.name
The name of the country this SORMAS instance is used in. If the database contains countries, this property must be filled in and match the name of one of those countries for SORMAS to work properly. The country will be used to pre-fill the country fields of locations.
country.epidprefix
If your country is using so-called EPID numbers to identify cases, you need to specify the country prefix here.
Examples: NIE, GHA
country.center.latitude
country.center.longitude
GPS coordinates of the geographical center of the country SORMAS is used in. The maps on the Dashboard and the Statistics screen will be centered to these coordinates if no user region is provided or map.usecountrycenter is set to true.
Defaults: 0 (latitude), 0 (longitude)
Examples: 52.2721095 (latitude), 10.3878027 (longitude)
map.usecountrycenter
Forces the dashboard map to always center on the country.center
coordinates defined above.
Default: true
Possible Values: true, false
map.zoom
Initial zoom level of the maps on the Dashboard and the Statistics screen.
Default: 1
map.tiles.url
URL used to retrieve the tileset for maps.
Example: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png
map.tiles.attribution
Attribution of the map tileset, required for tiles from OpenStreetMap (see https://www.openstreetmap.org/copyright )
csv.separator
The character used in .csv files to separate columns from each other. Should match the separator that is commonly used in the locale specified in country.locale
.
Default: ,
Examples: , or ; - you can use \u0020 for a whitespace or \u0009 for a horizontal tab
Mobile Application
app.url
The URL that can be used to download the Android .apk file. Must contain a placeholder for the app version, or a specific version number (not recommended). If you want to use the mobile app, this property must be filled in because the app is using it to automatically download new versions.
Example: https://SERVER-NAME/downloads/sormas-%version-release.apk
File Paths
For all properties in this category, please make sure that the right separators are used, based on the operating system that SORMAS is running on. Typically, those are \\
for Windows (escaped backslash) and /
for Linux.
rscript.executable
Location of the Rscript executable. Necessary to display infection network diagrams on the Contact Dashboard.
documents.path
Path to the folder on the server where documents added as attachments to cases, contacts or events are stored.
Default: /opt/sormas/documents/
temp.path
Path where temporary files will be stored. Both Payara and PostgreSQL need read and write access to this folder. Temporary files are deleted on a nightly basis, so make sure to not store any important files here.
Default: /opt/sormas/temp/
generated.path
Path where generated files, such as import templates or the data dictionary, are stored.
Default: /opt/sormas/generated/
custom.path
Path where custom files that are used by the system for various purposes can be stored, e.g. HTML content for the login page or a custom logo.
Default: /opt/sormas/custom/
Server Settings
createDefaultEntities
Determines whether default infrastructure data and users are created when the server is starting with an empty database. Please note that a default admin user is always created to make sure that you can log in and use the system.
Default: false
Possible Values: true, false
skipDefaultPasswordCheck
Determines whether logging in as a default user using a default password will bring up a prompt that asks the user to change their password.
Default: false
Possible Values: true, false
devmode
Dev mode allows administrators to use functionalities that are not intended for live systems, such as creating random cases for testing or training purposes.
Default: false
Possible Values: true, false
feature.automaticcaseclassification
Determines whether cases are automatically classified according to a specific ruleset based on their disease. Please note that automatic case classification is not necessarily available for every disease.
Default: true
Possible Values: true, false
daysAfterSystemEventGetsDeleted
Number of days after which system events are deleted from the database. An example for a system event is the last date at which data from an external service was pulled.
Default: 90
namesimilaritythreshold
The similarity threshold after which two names are identified as similar enough to consider them for duplicate detection. The higher the value, the more restrictive the similarity search. The default value should work for most servers. If you need to change it, please change it carefully as slightly higher or lower values already lead to significant differences. The "D" after the number is required and specified that it is a decimal number.
Default: 0.65D
Possible Values: 0.0D - 1.0D
duplicatechecks.excludepersonsonlylinkedtoarchivedentries
Excludes persons that are only related to archived cases, contacts or event participants when searching for duplicate persons during case, contact or event participant creation. Setting this value to true might increase performance during imports and entity creation, but will likely lead to more duplicate persons in the system.
Default: false
Possible Values: true, false
infrastructuresyncthreshold
Maximum number of communities and facilities that can be synchronized in a single infrastructure synchronization call. Lower this value if you expect mobile app users to have a bad internet connection frequently.
Default: 1000
stepSizeForCsvExport
Number of entries in detailed CSV exports that are processed in one batch. Only change this value if there is a good reason for it, i.e. there are performance issues with the detailed exports that could be improved by it.
Default: 5000
dashboardMapMarkerAutoLimit
Maximum number of cases, contacts and events to be displayed automatically on the Dashboard and Statistics maps. If the amount of markers exceed this threshold, a warning message is displayed instead. Leaving this empty means that markers are always shown. Please note that this could significantly slow down your systems if there are a lot of markers to be displayed.
Default: 1000
auditor.attribute.logging
Determines whether database logs storing the information which user changed which data at which point in time also includes the specific values that were changed.
Default: true
Possible Values: true, false
audit.logger.config
Config file path of the audit logger.
Possible Values: Any file system path, but preferably /opt/config/audit-logback.xml
audit.source.site
Identifies the SORMAS instance in the audit log.
Possible Values: Any identifier, but preferably the host name
docgeneration.nullReplacement
Replacement for empty variables in generated documents.
Default: ./.
documentUploadSizeLimitMb
Maximum file size allowed for the upload of documents and document templates in MB.
Default: 20
importFileSizeLimitMb
Maximum file size allowed for the upload of import files in MB.
Default: 20
sormasStats.url
If defined, adds a button to open SORMAS-STATS to the statistics screen that takes the user to the specified URL.
Communication and Notifications
email.sender.address
Email address that will be set as the sender address of email notifications sent out by the system.
Default: noreply@sormas.org
email.sender.name
Name that will be set as the sender of email notifications sent out by the system.
Default: SORMAS Support
sms.sender.name
Name that will be set as the sender of SMS notifications sent out by the system.
Default: SORMAS
sms.auth.key
sms.auth.secret
SORMAS supports the delivery of SMS notifications via Vonage (https://www.vonage.com/communications-apis/ ). You need to specify a valid authentication key and secret in order to use this feature. SORMAS will not attempt to send out SMS if these properties are left empty.
Custom Branding
SORMAS allows server administrators to customize the name and logo of the application. This will for example affect the login page, main menu, and generated files (like exports or import templates). Further customization can be done by editing the files in the custom directory, e.g. to add additional supporter logos to the sidebar or a disclaimer text to the login area.
custombranding
Determines whether custom branding is supposed to be used. If custom branding is disabled, the following properties as well as the files in the custom directory will have no effect.
Default: false
Possible Values: true, false
custombranding.name
Custom name that is used instead of SORMAS for this instance.
custombranding.logo.path
The path on the server to an image file to replace the standard SORMAS logo. Please have a look at the "File Paths" section to see how paths are supposed to be formatted depending on your operating system.
custombranding.useloginsidebar
Determines whether the login sidebar that contains the SORMAS logo, description, and logos of the original creators should be shown.
Default: true
Possible Values: true, false
custombranding.loginbackground.path
The path on the server to an image file to replace the standard world map background of the login page. Please have a look at the "File Paths" section to see how paths are supposed to be formatted depending on your operating system.
Authentication
authentication.provider
Specifies the authentication provider to be used for the user interface and the ReST API.
Default: SORMAS
Possible Values: SORMAS, KEYCLOAK
authentication.provider.userSyncAtStartup
Specifies whether server startup will trigger a user sync to Keycloak. Since this is mainly needed for an initial sync, it is recommended to disable this property once that initial sync has been performed.
Default: false
Possible Values: true, false
Geocoding Service
geocodingServiceUrlTemplate
URL template used to access a geocoding service. If specified, the application can generate geo coordinates based on entered addresses.
Example (Germany): https://sg.geodatenzentrum.de/gdz_geokodierung_bund__{credentials}/geosearch.json?query=${street}+${houseNumber},${postalCode}+${city}&filter=typ:haus&count1 Example (France): https://api-adresse.data.gouv.fr/search?q=${houseNumber}+${street},${postalCode}+${city}&type=housenumber&limit=1
geocodingLatitudeJsonPath
geocodingLongitudeJsonPath
JSON paths of the longitude and latitude in the result of the geocoding service calls.
Examples: $.features[0].geometry.coordinates[0] (longitude), $.features[0].geometry.coordinates[1] (latitude)
geocodingEPSG4326_WKT
EPSG4326 WKT string used to interpret geo coordinates (e.g. axis order).
Default: GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AXIS["Long",EAST],AXIS["Lat",NORTH],AUTHORITY["EPSG","4326"]]
SORMAS Central
SORMAS Central currently serves as the central point that connects all SORMAS2SORMAS instances.
central.oidc.url
URL of the OIDC server (e.g., Keycloak) authenticating 3rd party requests.
central.etcd.host
The host name of the etcd instance providing data.
central.etcd.clientName
The client name which is used to authenticate to the central etcd.
central.etcd.clientPassword
The password which is used to authenticate to the central etcd.
central.etcd.caPath
The path to the CA cert trusted by etcd clients.
central.location.sync
If set to true, all infrastructure data from the central server will be synchronized into the local SORMAS database at startup and on a nightly basis.
Default: false
Possible Values: true, false
SORMAS2SORMAS Interface
sormas2sormas.path
Path on the server where certificates and files related to SORMAS2SORMAS are stored. Please have a look at the "File Paths" section to see how paths are supposed to be formatted depending on your operating system.
Default: /opt/sormas/sormas2sormas/
sormas2sormas.id
The unique S2S ID of this instance.
sormas2sormas.keystoreName
Name of the key store file used for data encryption under sormas2sormas.path
.
Default: {host name}.sormas2sormas.keystore.p12
sormas2sormas.keystorePass
Password of the key store used for data encryption.
sormas2sormas.rootCaAlias
The alias of the trusted root CA. This is used to fetch the CA from the key store.
sormas2sormas.truststoreName
Name of the trust store file used for verification of incoming S2S data. Placed under sormas2sormas.path
.
Default: sormas2sormas.truststore.p12
sormas2sormas.truststorePass
Password of the trust store.
sormas2sormas.oidc.realm
Name of the authorization realm.
sormas2sormas.oidc.clientId
The client ID used in OIDC (client authorization grant).
sormas2sormas.oidc.clientSecret
The client secret used in OIDC (client authorization grant).
sormas2sormas.etcd.keyPrefix
The key space (prefix) which is used in etcd to store S2S related information.
Default: true
Possible Values: true, false
sormas2sormas.ignoreProperty.additionalDetails
sormas2sormas.ignoreProperty.externalId
sormas2sormas.ignoreProperty.externalToken
sormas2sormas.ignoreProperty.internalToken
Specifies whether the respective property is excluded from the data shared with other instances.
Default: true
Possible Values: true, false
sormas2sormas.districtExternalId
External ID of the district to which the cases/contacts will be assigned when accepting a share request.
SurvNet Interface
survnet.url
URL of the SurvNet Gateway. Leaving this empty will disable all features related to SurvNet.
Example: https://localhost:8080/survnet/rest/admin
survnet.versionEndpoint
Name of the endpoint for getting the version of the SurvNet Gateway
Default: version
Symptom Journals and Patient Diaries
Symptom Journals (e.g. PIA)
interface.symptomjournal.url
Website that is displayed inside an iFrame to create a symptom journal user account for a contact person. If left empty, this feature will be disabled.
interface.symptomjournal.authurl
interface.symptomjournal.clientid
interface.symptomjournal.secret
Authentication details necessary to access the external symptom journal.
interface.symptomjournal.defaultuser.username
interface.symptomjournal.defaultuser.password
Credentials of the default user used by the symptom journal to communicate with the SORMAS API. Can be used to automate the setup process of new systems.
Patient Diaries (e.g. Climedo)
interface.patientdiary.url
Website that is displayed inside an iFrame to create a patient diary user account for a contact person. If left empty, this feature will be disabled.
interface.patientdiary.probandsurl
URL that is used to register new persons in the patient diary.
interface.patientdiary.authurl
URL used to retrieve tokens for backend requests.
interface.patientdiary.frontendAuthurl
URL used to retrieve tokens for frontend requests. If not specified, the authurl is used instead.
interface.patientdiary.tokenLifetime
Number of seconds tokens fetched via the authurl are cached.
Default: 21600
interface.patientdiary.email
interface.patientdiary.password
Authentication details necessary to access the external patient diary. Used for both authUrls.
interface.patientdiary.defaultuser.username
interface.patientdiary.defaultuser.password
Credentials of the default user used by the patient diary to communicate with the SORMAS API. Can be used to automate the setup process of new systems.
interface.patientdiary.acceptPhoneContact
Configures whether the phone number is accepted for registering a person in the patient diary.
Default: true
Possible Values: true, false
DEMIS Interface
interface.demis.jndiName
JNDI name of the DEMIS adapter that is connected to this SORMAS instance. Specifies where additionally deployed modules are stored.
Example: java:global/sormas-demis-adapter/DemisMessageFacade