Configuration Reference
This page documents every significant property in the Viglet Dumont application.yaml file. Any property can be overridden via environment variables, JVM system properties (-Dkey=value), or a separate application-production.yaml file.
Full Default Configuration
Section titled “Full Default Configuration”spring: datasource: url: jdbc:h2:file:./store/db/dumontDB;DATABASE_TO_UPPER=false;CASE_INSENSITIVE_IDENTIFIERS=true username: sa password: "" driver-class-name: org.h2.Driver h2: console: enabled: false path: /h2 settings: web-allow-others: true jpa: properties: hibernate: "[globally_quoted_identifiers]": true "[enable_lazy_load_no_trans]": true hibernate: ddl-auto: update show-sql: false artemis: mode: embedded broker-url: localhost:61616 embedded: enabled: true persistent: true data-directory: store/queue queues: connector-indexing.queue jms: template: default-destination: connector-indexing.queue
server: port: ${PORT:30130}
dumont: indexing: provider: turing job: batch-size: 50 solr: url: http://localhost:8983/solr collection: dumont elasticsearch: url: http://localhost:9200 index: dumont username: ~ password: ~
turing: url: http://localhost:2700 apiKey: ""
aem.querybuilder: false aem.querybuilder.parallelism: 10
logging: file: name: store/logs/dum-connector.log level: com: viglet: INFOProperty Reference
Section titled “Property Reference”Server
Section titled “Server”| Property | Default | Description |
|---|---|---|
server.port |
30130 |
HTTP port for the Dumont application |
Admin Account
Section titled “Admin Account”| Property | Default | Description |
|---|---|---|
dumont.admin.password |
(unset) | Password for the local admin account, applied at startup while no password is stored. Set it (env DUMONT_ADMIN_PASSWORD, at least 6 characters) and a container or CI start comes up with a working login and no first-access setup screen. Once a password is stored, for example set in the console, the property is ignored and a log line says so. |
LLM Enrichment
Section titled “LLM Enrichment”| Property | Default | Description |
|---|---|---|
dumont.enrichment.llm.enabled |
false |
Lets connectors classify with an LLM through Viglet Turing (/api/v2/summary, using the configured turing.url and turing.apiKey). It also lets them extract lists from a record’s text, such as the skills a job description names; only items that appear in the text are published. When off, connectors that support an LLM fallback classify with their own rules and dictionaries only. |
Run Alerts
Section titled “Run Alerts”A run can finish and still carry a warning: a source reports something an operator should act on, or a field’s coverage dropped sharply since the last run. The console marks such a run with a Warning badge on the Indexing Stats page.
| Property | Default | Description |
|---|---|---|
dumont.alerts.webhook-url |
(unset) | URL that receives a JSON POST when a source’s run starts carrying a warning (event, source, provider, operationType, endTime, documentCount, partial, warnings). Sent once when a source goes from healthy to warned, not on every warned run. The Turing API key is never sent. Unset, nothing is sent. |
Run Metrics (Prometheus)
Section titled “Run Metrics (Prometheus)”Each source’s last run is published for Prometheus at /actuator/prometheus. The endpoint is served on a separate management port only, never on server.port, and needs no login, so keep that port on your internal network. No other actuator endpoint is exposed.
| Property | Default | Description |
|---|---|---|
management.server.port |
30131 |
Port that serves /actuator/prometheus. |
Every metric carries the source and provider labels:
| Metric | Meaning |
|---|---|
dumont_run_last_status |
1 if the source’s last run completed, 0 if it stopped short (a partial run) |
dumont_run_last_finished_seconds |
When the last run ended, in Unix seconds |
dumont_run_last_duration_seconds |
How long the last run took |
dumont_run_last_documents |
Documents the last run indexed |
dumont_runs_total |
Runs that ended, by outcome (complete, warned, partial) |
The values are restored from the stored run history at startup, so a restart does not hide a source that has stopped running. Example alert rules:
- alert: DumontRunFailed expr: dumont_run_last_status == 0- alert: DumontRunStalled expr: time() - dumont_run_last_finished_seconds > 2 * 3600Database
Section titled “Database”| Property | Default | Description |
|---|---|---|
spring.datasource.url |
jdbc:h2:file:./store/db/dumontDB;CASE_INSENSITIVE_IDENTIFIERS=TRUE |
JDBC URL for the indexing state database. If you override it with another H2 URL, keep CASE_INSENSITIVE_IDENTIFIERS=TRUE: without it, indexing runs fail when they finish. |
spring.datasource.username |
sa |
Database username |
spring.datasource.password |
"" |
Database password |
spring.datasource.driver-class-name |
org.h2.Driver |
JDBC driver class |
spring.h2.console.enabled |
false |
Enable H2 web console: do not enable in production |
Message Queue (Apache Artemis)
Section titled “Message Queue (Apache Artemis)”| Property | Default | Description |
|---|---|---|
spring.artemis.mode |
embedded |
embedded (default) or native (external broker) |
spring.artemis.broker-url |
localhost:61616 |
Broker URL when using native mode |
spring.artemis.embedded.enabled |
true |
Enable the embedded broker |
spring.artemis.embedded.persistent |
true |
Persist queue messages to disk (survives restarts) |
spring.artemis.embedded.data-directory |
store/queue |
Directory for persisted queue data |
spring.artemis.embedded.queues |
connector-indexing.queue |
Queue name created on startup |
Indexing Configuration
Section titled “Indexing Configuration”| Property | Default | Description |
|---|---|---|
dumont.indexing.provider |
turing |
Output target: turing, solr, or elasticsearch |
dumont.indexing.job.batch-size |
50 |
Number of Job Items per batch before queue delivery |
dumont.indexing.provision |
true |
Send each source’s declared field schema to the backend before its first document, so fields are created as declared rather than inferred from whichever value arrives first. A rejected schema is logged and indexing continues with the site’s current schema. Turing only: other backends have no declarative schema endpoint |
Extraction Resilience
Section titled “Extraction Resilience”An incomplete indexing run must not de-index what it never reached. Skipping that sweep is unconditional; these tune when a run is judged incomplete, and are read by the AEM connector, whose extraction is one HTTP fetch per page. See Core Concepts → Data Quality.
| Property | Default | Description |
|---|---|---|
dumont.reactive.indexing |
false |
Extract on a bounded pool instead of sequentially |
dumont.reactive.parallelism |
10 |
Threads used for parallel extraction |
dumont.reactive.extractTimeoutMs |
0 |
Per-extract wall-clock bound in milliseconds; the overrun is cancelled and counted as one failed extraction. 0 disables it: no extraction is ever cancelled for time |
dumont.reactive.failureRatioThreshold |
0.5 |
Finish standalone (skip the de-index sweep) when this fraction of a run’s extractions fail. 0 disables the guard |
Content Audit
Section titled “Content Audit”The audit runs on a cron, re-enumerates every source, and files a record for anything the
connector never queued. With dumont.audit.index.enabled it also compares against the search
index itself and reports three differences: missing (in the source, never landed),
stale (landed, but a later write failed), and orphaned (in the index, gone from the
source). Missing and stale ids are requeued through the normal pipeline. Orphans are never
deleted by the audit: a discovery pass that under-reports ids would otherwise take live content
out of the index. Instead each pass writes the ids it found into a dated orphan report you
review and apply yourself, through the orphan endpoints.
| Property | Default | Description |
|---|---|---|
dumont.audit.cron |
0 0 3 * * * |
Cron for the scheduled content audit. - disables it |
dumont.audit.cron.zone |
UTC |
Timezone the cron is evaluated in |
dumont.audit.index.enabled |
true |
Also compare against the search index. Requires a backend that can enumerate what it holds. Turing can; Solr and Elasticsearch report nothing and the comparison is skipped |
dumont.audit.index.orphanTtl |
PT24H |
How long an orphan report stays applicable (ISO-8601 duration). Past it, applying is refused and a fresh audit must re-establish the report. PT0S or below switches expiry off |
Turing Connection
Section titled “Turing Connection”| Property | Default | Description |
|---|---|---|
turing.url |
http://localhost:2700 |
Base URL of the Turing instance |
turing.apiKey |
"" |
API Token for authenticating with Turing |
Solr Direct Connection
Section titled “Solr Direct Connection”| Property | Default | Description |
|---|---|---|
dumont.indexing.solr.url |
http://localhost:8983/solr |
Apache Solr base URL |
dumont.indexing.solr.collection |
dumont |
Solr collection name |
Elasticsearch Direct Connection
Section titled “Elasticsearch Direct Connection”| Property | Default | Description |
|---|---|---|
dumont.indexing.elasticsearch.url |
http://localhost:9200 |
Elasticsearch base URL |
dumont.indexing.elasticsearch.index |
dumont |
Elasticsearch index name |
dumont.indexing.elasticsearch.username |
(none) | Optional authentication username |
dumont.indexing.elasticsearch.password |
(none) | Optional authentication password |
AEM QueryBuilder
Section titled “AEM QueryBuilder”| Property | Default | Description |
|---|---|---|
dumont.aem.querybuilder |
false |
Enable QueryBuilder-based content discovery instead of tree traversal during full indexing |
dumont.aem.querybuilder.parallelism |
10 |
Number of parallel threads for processing discovered paths |
AEM Adobe I/O Events
Section titled “AEM Adobe I/O Events”See AEM Connector → Adobe I/O Events.
| Property | Default | Description |
|---|---|---|
dumont.aem.webhook.adobe-io.client-id |
– | API Key (Client ID) of the OAuth Server-to-Server credential. When set, an incoming webhook payload whose recipient_client_id does not match is rejected with 401; unset leaves the endpoint open and logs a warning at startup |
dumont.aem.journal.enabled |
false |
Pull the same events from the Adobe I/O journal, recovering any the webhook dropped. Does not affect the webhook |
dumont.aem.journal.poll-ms |
60000 |
Delay between the end of one journal poll and the start of the next |
dumont.aem.journal.batch-size |
100 |
Events requested per journal page |
dumont.aem.journal.max-pages-per-poll |
20 |
Journal pages followed in one poll, so a large backlog drains across polls rather than in one burst |
dumont.aem.journal.client-id |
– | OAuth Server-to-Server API Key (Client ID) used for the journal |
dumont.aem.journal.client-secret |
– | OAuth Server-to-Server Client Secret used for the journal |
dumont.aem.journal.ims-url |
https://ims-na1.adobelogin.com/ims/token/v3 |
Adobe IMS token endpoint |
dumont.aem.journal.scopes |
openid,AdobeID,adobeio_api,event_receiver_api |
Scopes requested for the token |
dumont.aem.journal.sources.<source> |
– | Journal URL of the event registration, per Dumont source name |
AEM Fetch Strategy
Section titled “AEM Fetch Strategy”Configured per source in the console, not by property: see AEM Connector → Fetch Strategy.
Dependency Tracking
Section titled “Dependency Tracking”| Property | Default | Description |
|---|---|---|
dumont.dependencies.enabled |
false |
Persist /content/* references extracted from each indexed page and cascade re-index any dependent document on standalone updates. Currently populated only by the AEM connector, see AEM Connector → Dependency Tracking |
Logging
Section titled “Logging”| Property | Default | Description |
|---|---|---|
logging.file.name |
store/logs/dum-connector.log |
Log file path |
logging.level.com.viglet |
INFO |
Log level for Dumont application code |
Indexing Log
Section titled “Indexing Log”Separate from the application log above. Every document Dumont processes leaves a row per status it passes through (prepared, sent to the queue, delivered to the search engine), each naming the document, the source that produced it and the run it belonged to. Queried through the Logging API.
It is off by default: with no engine configured, the endpoint answers with an empty page and nothing is written. Pick MongoDB when you intend to query the log, and Redis when you mostly want to tail it: the Redis engine filters and sorts in memory after reading the whole list, so it degrades as the log grows.
Turning it on is one setting. dumont.logging.engine selects both the side that reads the log and
the Logback profile that writes it: logging.config is derived from it, so mongodb selects
logback-spring-mongo.xml and redis selects logback-spring-redis.xml:
dumont: logging: engine: mongodb mongodb: enabled: true uri: mongodb://mongo:27017Every profile writes to the console and the log file as well as its store, so choosing an engine does not cost you either. In particular there is no separate console-only profile to select in a container: the Docker image writes to stdout out of the box and the engine still applies.
| Property | Default | Description |
|---|---|---|
dumont.logging.engine |
none |
none, mongodb or redis |
dumont.logging.database |
dumontLog |
MongoDB database name |
dumont.logging.collection.indexing |
indexing |
MongoDB collection holding the indexing rows |
dumont.mongodb.enabled |
false |
Must also be true for the mongodb engine to activate |
dumont.mongodb.uri |
mongodb://localhost:27017 |
MongoDB connection string |
dumont.redis.enabled |
false |
Must also be true for the redis engine to activate |
dumont.redis.uri |
redis://localhost:6379/0 |
Redis connection string |
dumont.redis.key.indexing |
dumontLog:indexing |
Redis list key holding the indexing rows |
dumont.redis.maxEntries.indexing |
50000 |
Trim the indexing list to this length on write |
The same logging.config also persists the server log (the connector’s own WARN and ERROR
lines) to that store, in a second collection or list. It is written by the same machinery and
fails the same way, but it is not exposed through the Logging API; read it in the store, or in
store/logs/dum-connector.log.
| Property | Default | Description |
|---|---|---|
dumont.logging.collection.server |
server |
MongoDB collection holding the server-log rows |
dumont.redis.key.server |
dumontLog:server |
Redis list key holding the server-log rows |
dumont.redis.maxEntries.server |
10000 |
Trim the server list to this length on write |
Each store is connected once and the connection is held for the lifetime of the connector (a MongoDB client, or a Redis pool) rather than dialled again per request. Tune either through its connection string; the usual options apply.
When the store refuses a write, the row is lost: the connector will not stall an indexing run
waiting for its own log. It says so instead, at WARN in the application log
(store/logs/dum-connector.log), naming both which log is losing rows and which store refused
them:
Indexing log: a row could not be written to MongoDB. Rows are being lost while this lasts,so the history will read short rather than empty.
Server log: a row could not be written to Redis. Rows are being lost while this lasts,so the history will read short rather than empty.An outage reports once rather than once per row, with a running count while it lasts and a final
tally when writes resume, so the number of rows missing is a number you can read rather than
infer. Grep for Indexing log: and Server log: after an outage before concluding that a short
history means a quiet connector.
These warnings always reach the file and the console, never the store being complained about, so a MongoDB outage does not swallow the notice that MongoDB is down.
One default is Dumont’s rather than the driver’s. Where dumont.mongodb.uri does not set
serverSelectionTimeoutMS, the indexing log applies 5000 ms in place of the driver’s 30 s, so
that a MongoDB which is down makes logging/status answer in five seconds rather than holding the
request open for half a minute. Set the option explicitly in the URI to choose your own:
dumont.mongodb.uri: mongodb://mongo:27017/?serverSelectionTimeoutMS=2000Common Production Overrides
Section titled “Common Production Overrides”A minimal production override:
spring: datasource: url: jdbc:postgresql://db-host:5432/dumont_db username: dumont password: strong_password driver-class-name: org.postgresql.Driver h2: console: enabled: false
dumont: indexing: provider: turing
turing: url: https://search.yourcompany.com apiKey: your-turing-api-token
server: port: 30130