Configuration

Configure runtime endpoints, security, persistence, validation, retention, backup, and operational behavior. The distributed application.properties includes detailed inline comments for every setting.

Configuration file

FireSonic runtime configuration is stored in ./config/application.properties.

config/
├─ application.properties
├─ license.lic
└─ certs/

Essential configuration

Review these values for every installation before processing production traffic.

PropertyDefault / ExamplePurpose
license.file./config/license.licLicense file location.
payload.crypto.keys.k1.passwordemptyEncryption secret used to protect persisted HL7 payloads. Set a strong unique secret and back it up securely.
mllp.port2575Incoming HL7 v2 MLLP port.
fhir.server.base.urlenvironment/defaultTarget FHIR server endpoint.
fhir.server.auth.typenoneFHIR authentication mode: none, basic, or bearer.
management.auth.usernameadminAdministration Console username.
management.auth.passwordchange-meChange immediately for production deployments.

Environment variables and secrets

Use environment-variable placeholders or your deployment environment’s secret-management system for passwords, tokens, encryption keys, and external-service credentials. Never commit production secrets to source control.

fhir.server.base.url=${FHIR_SERVER_URL:http://localhost:8080/fhir}
fhir.server.auth.basic.password=${FHIR_PASSWORD}
fhir.server.auth.bearer.token=${FHIR_BEARER_TOKEN}
payload.crypto.keys.k1.password=${FS_PAYLOAD_KEY}
management.auth.password=${FS_ADMIN_PASSWORD}

Additional trusted TLS certificates

FireSonic uses the JVM default trusted Certificate Authorities. When additional certificate loading is enabled, FireSonic also trusts valid X.509 certificates found in ./config/certs. This is useful when a FHIR or terminology server uses a hospital/private CA.

tls.certs.enabled=true
tls.certs.dir=./config/certs
  • Supported certificate file extensions: .pem, .crt, and .cer.
  • Certificates are loaded once during FireSonic startup.
  • Restart FireSonic after adding, replacing, or removing certificates.
config/
├─ application.properties
├─ license.lic
└─ certs/
   ├─ hospital-root-ca.crt
   └─ internal-fhir-ca.pem

Property reference

The groups below mirror the sections in the distributed application.properties file.

Licensing
PropertyDefaultDescription
license.file./config/license.licPath to the FireSonic license file.
Database & Persistence
PropertyDefaultDescription
db.path./data/fs.dbSQLite database used for message persistence, retry tracking, auditing, and restart recovery.
payload.compression.enabledtrueCompress HL7 payloads before encryption and persistence to reduce database and backup size.
payload.crypto.activeKeycommentedOptional active encryption key identifier when multiple encryption keys are configured.
payload.crypto.keys.k1.passwordemptyPassword used to derive encryption key k1. Use a unique strong secret.
Storage guidance

Keep the SQLite database on local disk attached to the same system where FireSonic runs. Do not place db.path on mounted network storage, shared drives, or remote filesystems.

Critical

Losing payload.crypto.keys.k1.password makes encrypted persisted payloads unrecoverable. Store the secret securely and include it in your disaster-recovery plan.

Semantic Validation Rules
PropertyDefaultDescription
semantic.rules.enabledtrueEnable semantic validation after conversion and before FHIR delivery.
semantic.rules.dir./rules/semanticDirectory containing Groovy DSL semantic rules.
semantic.rules.autoreload CommercialtrueAutomatically validate and activate changed semantic-rule generations without restarting the FireSonic runtime.
Groovy Scripts
PropertyDefaultDescription
scripts.dir./scriptsDirectory containing customer Groovy integration scripts.
scripts.autoreload CommercialfalseCompile, validate, and activate changed script generations without restarting the FireSonic runtime.
scripts.autoreload.scanIntervalMs Commercial2000How often the script directory is scanned for changes.
scripts.autoreload.quietPeriodMs Commercial1000How long changed files must remain stable before reload is attempted.
runtime.script.timeout.enabledtrueEnable per-hook execution timeout enforcement.
runtime.script.timeout.ms60000Maximum hook execution time in milliseconds.
MLLP Listener
PropertyDefaultDescription
mllp.port2575TCP port for incoming HL7 v2 MLLP connections.
mllp.charsetUTF-8Character set used to decode incoming HL7 messages.
mllp.socket.timeout.ms30000Socket read timeout in milliseconds.
mllp.max.message.bytes5000000Maximum accepted HL7 message size in bytes.
mllp.backlog30Maximum number of pending TCP connections.
TLS Certificates
PropertyDefaultDescription
tls.certs.enabledtrueLoad additional trusted X.509 certificates in addition to JVM default trusted CAs.
tls.certs.dir./config/certsDirectory containing additional .pem, .crt, and .cer certificates. Certificates are loaded once during FireSonic startup.
FHIR Server & Delivery
PropertyDefaultDescription
fhir.server.base.url${FHIR_SERVER_URL:http://host.docker.internal:8080/fhir}Primary FHIR server endpoint.
fhir.server.timeout.ms30000FHIR request timeout in milliseconds.
fhir.server.auth.typenoneAuthentication mode: none, basic, or bearer.
fhir.server.auth.basic.usernameemptyBasic-auth username.
fhir.server.auth.basic.passwordemptyBasic-auth password.
fhir.server.auth.bearer.tokenemptyBearer token.
fhir.delivery.max.bundles.per.second0Maximum outbound FHIR bundles per second. 0 means unlimited, subject to license limits.
FHIR Delivery Circuit Breaker Commercial
PropertyDefaultDescription
fhir.delivery.breaker.enabled CommercialtruePause outbound FHIR delivery when repeated delivery failures are detected.
fhir.delivery.breaker.failure.threshold Commercial3Consecutive delivery failures required to open the breaker.
fhir.delivery.breaker.recovery.success.threshold Commercial2Successful deliveries required in HALF_OPEN state to close the breaker and resume normal delivery.
fhir.delivery.breaker.cooldown.ms Commercial30000Pause duration before the breaker enters HALF_OPEN and tests downstream delivery again.
Terminology Server
PropertyDefaultDescription
terminology.server.base.urlemptyOptional terminology endpoint. When blank, the main FHIR server is used.
terminology.server.timeout.msemptyOptional terminology request timeout.
terminology.server.auth.typeemptyAuthentication mode: none, basic, or bearer.
terminology.server.auth.basic.usernameemptyBasic-auth username.
terminology.server.auth.basic.passwordemptyBasic-auth password.
terminology.server.auth.bearer.tokenemptyBearer token.
FHIR Extension Canonical Base URL
PropertyDefaultDescription
fhir.extension.base.urlhttps://firesonic.io/fhirCanonical base URL for custom FHIR extensions. Customer deployments should use the namespace owned by the organization that governs the extensions.
Web Administration Console
PropertyDefaultDescription
management.auth.enabledtrueEnable HTTP Basic Authentication for the Administration Console.
management.auth.usernameadminAdministration Console username.
management.auth.passwordchange-meAdministration Console password; change immediately in production.
management.metrics.auth.enabled CommercialfalseEnable authentication for the commercial metrics endpoint.
management.host0.0.0.0Management HTTP bind address.
management.port8181Administration and management HTTP port.
admin.api.retry.batch.max.limit Commercial5000Safety cap for one batch-retry request.
Queues & Workers
PropertyDefaultDescription
queue.received.capacity10000Capacity of the received-message queue.
queue.processing.capacity10000Capacity of the processing queue.
intake.threads CommercialautoConfigure intake concurrency for the deployment to increase throughput and better utilize available CPU resources.
processor.threads CommercialautoConfigure processing concurrency for the deployment to increase throughput and better utilize available CPU resources.
Retry & Lease Configuration
PropertyDefaultDescription
processor.max.retry.attempts5Maximum processing attempts before a message is marked failed.
processor.base.backoff.ms1000Base retry delay in milliseconds.
processor.lease.msautomaticProcessing lease duration; normally calculated automatically.
Processing Circuit Breaker Commercial
PropertyDefaultDescription
processing.breaker.enabled CommercialtruePause new processing when repeated identical processing failures are detected.
processing.breaker.failure.threshold Commercial5Repeated identical processing failures required to open the breaker.
processing.breaker.window.ms Commercial60000Time window for counting repeated identical processing failures.
processing.breaker.cooldown.ms Commercial300000Pause duration before processing resumes automatically.
Maintenance & Recovery
PropertyDefaultDescription
reloader.interval.seconds30Background maintenance interval for recovery, queue reload, and retention housekeeping.
reloader.empty.queue.threshold.ms2000Internal tuning parameter; normally keep the default.
Message Retention
PropertyDefaultDescription
retention.filtered.days3Retention for FILTERED messages.
retention.processed.days7Retention for PROCESSED messages.
retention.failed.days30Retention for REJECTED, DELIVERY_FAILED, and PROCESSING_FAILED messages.
retention.purge.interval.minutes60Interval between retention cleanup runs.
Backup
PropertyDefaultDescription
backup.enabledfalseEnable scheduled SQLite database backups.
backup.interval.hours24Backup interval in hours; minimum 1.
backup.directory./backupLocal backup directory.
backup.retention.count7Number of local backup files to keep.
backup.external.directoryemptyCopy database backups to an external destination such as a mounted disk, NAS, NFS share, or SMB share.
backup.compresstrueGZIP-compress backup files.

Advanced tuning

Keep advanced tuning values at their defaults unless workload characteristics or support guidance require a change. Examples include MLLP backlog, script timeout, retry/backoff parameters, circuit-breaker thresholds, queue capacities, and maintenance timing.