Skip to content

nama.properties ​

nama.properties is the one file that tells an installation what it is: which database to open, what to call itself, where its files live, and which of the system's safety valves are open. It sits beside the application on the server — normally in Tomcat's lib folder — and it is read once at startup, so a change to it takes effect when the server is restarted.

The format is one key=value per line:

properties
dbtype=SQLSERVER
dbname=namademo
dbuser=nama
customer=Nile Group
serverid=production-1

This page covers the settings support staff actually set on a customer's server. The system reads many more, but they are internal flags that exist for a developer chasing one specific problem — if a setting is not here and nobody told you to add it, it should not be in the file.

An unrecognised value is not an error

Most of these settings are read without validation. dbtype=sqlserve — one letter short — does not stop the server or log a complaint: the value fails to match, and the installation quietly starts up as MySQL. The same silence applies to a misspelled key, which is simply never read. When a setting seems to have no effect, check the spelling first.

The database, and what this installation calls itself ​

SettingWhat it does
dbuser / dbpasswordThe database login. The password is stored encrypted, not in clear text.
customerThe customer's name, as it appears in the licence and in messages the server sends home.
serveridThis server's identity. It is what decides whether this machine is allowed to send e-mails and SMS — see below — so a test copy must never keep production's value.
timezoneThe server's timezone.
defaultlangThe language a user gets before choosing one.

Addresses the system hands out ​

Nama writes links into e-mails, reports and mobile responses, and it cannot guess the address a user reaches it by:

SettingWhat it does
serverThe server's own address, e.g. http://192.168.1.5:8080/. Needed by replication and by anything that builds a link.
guiserverThe address of the user interface, e.g. http://192.168.1.5:8080/erp/ — this is what a link in a printed report or an e-mail points at.
approvalsServerThe address used for approval links, when approvals are answered from outside.
background-server-urlThe server that runs background processing, when it is a separate machine.

A link that lands the user on localhost is almost always one of these left unset.

Mail, SMS and WhatsApp — especially on a copy ​

The most expensive accident in ERP support is a test copy of a live database that starts e-mailing and texting the customer's customers. Three settings exist precisely to prevent it:

SettingWhat it does
sendmailsandsmsThe master switch. Off, and nothing leaves the server at all.
send-emails-only-toEvery e-mail the system produces goes to this address instead of its real recipients.
send-sms-only-toThe same for SMS: every message goes to this number.
send-whatsapp-only-toThe same for WhatsApp.
log-sms-dataRecords the body and the provider URL of each SMS so you can see what was actually sent. Diagnostic — turn it off afterwards.

Restoring a production backup onto a test server

Change serverid, then set send-emails-only-to and send-sms-only-to to your own address and number, before the first startup. The sending rule is serverid matched against the Send Mails And SMS Only From Servers list in Global Configuration, and that list travels inside the database you just restored — so a clone that keeps production's server id is, as far as the software is concerned, production.

Keeping people out ​

SettingWhat it does
prevent-login-of-login-idsA comma-separated list of login ids that cannot sign in.
prevent-login-of-login-ids-msgThe message they see. {0} is replaced with the login id.
prevent-login-of-ipsA comma-separated list of blocked addresses, matched by prefix — 192.168 blocks the whole range.
prevent-login-of-ips-msgThe message they see, with {0} for the address.
use-ldap-for-authenticationHand password checking to the customer's LDAP directory.
properties
prevent-login-of-login-ids=user1,user2
prevent-login-of-login-ids-msg=The user {0} is prevented from login by the administrator
prevent-login-of-ips=192.168,214.165.10.13
prevent-login-of-ips-msg=You cannot login from IP {0}

These are a blunt instrument for an emergency — a leaked account, an office that must be locked out today. Ordinary access control belongs in security profiles, not in this file.

Files and attachments ​

SettingWhat it does
tempFolderWhere temporary files are written. Defaults to c:/nama/temp on Windows and /var/nama/temp elsewhere.
storage-pathWhere the system keeps its stored files.
local-external-attachments-folderKeeps attachments on disk in this folder instead of inside the database — the setting that stops an attachment-heavy database growing out of hand.
max-single-attachment-size-kbRejects a single attachment larger than this.
max-total-attachment-size-gbCaps the total size of attachments.

Background work ​

SettingWhat it does
tasks-initial-delay-minutesHolds scheduled tasks back for this many minutes after startup, so a restarting server is not immediately busy.
processors-initial-delay-minutesThe same for the background processors.
no-background-processorsStops the background processors entirely. A server with this set saves documents but never processes them — which is right for a reporting replica and disastrous anywhere else.
disable-critical-errorsTurns off the critical-errors checks: isolation level, missing server id, disk space, failed business requests. Only for a server where those checks are known to be noise.
enable-purgeEnables the purge job that archives and removes old data.

Reports that will not end ​

SettingWhat it does
kill-reports-running-more-than-secondsStops a report that has run longer than this. The usual answer to one user's runaway report freezing a server.
error-for-running-reports-more-than-secondsLogs an error — without killing anything — for reports that run longer than this, so you can find them before users complain.

Defaults on new documents ​

valuedate and issuedate set the date a new document opens with, written as dd-mm-yyyy. They are for a data-entry catch-up — a batch of last month's paperwork — and should be removed when the catch-up is over, or every document created afterwards carries a stale date.

POS documents on the server ​

POS documents are written by the point-of-sale application, and the server refuses to let anyone edit or delete them by hand. allowposedit=true and allowposdelete=true lift those refusals. They are a correction tool, not a setting: turn on, fix the document, turn off.

Diagnostics you may be asked to switch on ​

Each of these makes the log louder for one area. Turn them on while reproducing a problem and off again immediately — on a busy installation they fill a disk quickly.

SettingWhat it logs
detailederrorFull error detail instead of the short user-facing message.
logwsWeb-service calls in and out.
log-failed-login-detailsWhy each failed sign-in failed.
logreplication / debugreplicationReplication messages, and the verbose version.
debugATTENDANCEThe HR attendance calculation, step by step.
log-to-files-in-debugWrites logs to files even when the server runs from an IDE.

replication.properties ​

A site that takes part in replication carries a second file beside the first, replication.properties:

SettingWhat it does
enableWhether replication runs on this site at all.
siteidThis site's code. Without it, replication refuses to start.
sitesequenceThis site's sequence number, used when generating codes so two sites never mint the same one. It is required.
headofficeurlThe head office address this site talks to.
headofficeipThe head office address, when given as a plain address rather than a URL.
properties
enable=true
siteid=001
sitesequence=1
headofficeurl=http://192.168.1.5:8080/