Skip to content

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.


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: INFO

Property Default Description
server.port 30130 HTTP port for the Dumont application
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.
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.

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.

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 * 3600
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
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
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

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

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
Property Default Description
turing.url http://localhost:2700 Base URL of the Turing instance
turing.apiKey "" API Token for authenticating with Turing
Property Default Description
dumont.indexing.solr.url http://localhost:8983/solr Apache Solr base URL
dumont.indexing.solr.collection dumont Solr collection name
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
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

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

Configured per source in the console, not by property: see AEM Connector → Fetch Strategy.

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
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

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:27017

Every 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=2000

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