Skip to content

Document Document Store configuration migration to unified camunda.document.* properties #9042

@houssain-barouni

Description

@houssain-barouni

Context

The Document Store configuration has been migrated from legacy DOCUMENT_* environment variables to the Unified Configuration system under camunda.document.* Spring properties.

Source: camunda/camunda#53423 · camunda/camunda#53917 (merged)

What changed

Document Store was the last major subsystem outside Unified Configuration. It previously loaded configuration directly from DOCUMENT_* environment variables via EnvironmentConfigurationLoader, completely outside the camunda.* Spring property namespace.

It now uses a typed, provider-namespaced model under camunda.document.*.

New configuration model

camunda:
  document:
    default-store-id: aws1
    thread-pool-size: 10

    aws:
      aws1:
        bucket-name: docs
        bucket-path: prod/
        bucket-ttl: 30
      aws2:
        bucket-name: archive

    gcp:
      gcp1:
        bucket-name: gcp-docs
        prefix: temp/

    azure:
      az1:
        container-name: docs
        connection-string: "..."   # or endpoint

    local:
      local1:
        path: /var/camunda/documents

    in-memory:
      mem1: {}

The provider type is now implicit in the namespace — there is no longer a CLASS property.

Property mapping (legacy → unified)

Root-level

Legacy env var New unified property
DOCUMENT_DEFAULT_STORE_ID camunda.document.default-store-id
DOCUMENT_THREAD_POOL_SIZE camunda.document.thread-pool-size

AWS S3

Legacy env var New unified property
DOCUMENT_STORE_<id>_CLASS=...AwsDocumentStoreProvider implicit (namespace aws)
DOCUMENT_STORE_<id>_BUCKET camunda.document.aws.<id>.bucket-name
DOCUMENT_STORE_<id>_BUCKET_PATH camunda.document.aws.<id>.bucket-path
DOCUMENT_STORE_<id>_BUCKET_TTL camunda.document.aws.<id>.bucket-ttl

GCP

Legacy env var New unified property
DOCUMENT_STORE_<id>_CLASS=...GcpDocumentStoreProvider implicit (namespace gcp)
DOCUMENT_STORE_<id>_BUCKET camunda.document.gcp.<id>.bucket-name
DOCUMENT_STORE_<id>_PREFIX camunda.document.gcp.<id>.prefix

Azure Blob

Legacy env var New unified property
DOCUMENT_STORE_<id>_CLASS=...AzureBlobDocumentStoreProvider implicit (namespace azure)
DOCUMENT_STORE_<id>_CONTAINER camunda.document.azure.<id>.container-name
DOCUMENT_STORE_<id>_CONTAINER_PATH camunda.document.azure.<id>.container-path
DOCUMENT_STORE_<id>_CONNECTION_STRING camunda.document.azure.<id>.connection-string
DOCUMENT_STORE_<id>_ENDPOINT camunda.document.azure.<id>.endpoint

Local storage

Legacy env var New unified property
DOCUMENT_STORE_<id>_CLASS=...LocalStorageDocumentStoreProvider implicit (namespace local)
DOCUMENT_STORE_<id>_PATH camunda.document.local.<id>.path

In-memory

Legacy env var New unified property
DOCUMENT_STORE_<id>_CLASS=...InMemoryDocumentStoreProvider implicit (namespace in-memory)

Backward compatibility

All DOCUMENT_* and DOCUMENT_STORE_* environment variables continue to work for at least one release cycle. A legacy bridge translates them to camunda.document.* before Spring binding. When both are present, unified camunda.document.* takes precedence.

Documentation tasks

  • Add/update the Document Store configuration reference page with the new camunda.document.* property model
  • Document all provider-specific properties for each store type (AWS, GCP, Azure, Local, In-memory)
  • Add a deprecation notice for DOCUMENT_* / DOCUMENT_STORE_* environment variables with the unified property equivalents
  • Document validation rules: duplicate store IDs across namespaces, missing required fields, unknown default-store-id — all fail at startup with a clear error
  • Note that provider SDK credential env vars (AWS_ACCESS_KEY_ID, GOOGLE_APPLICATION_CREDENTIALS, Azure SDK chain, etc.) are out of scope — they continue to be resolved by the cloud SDKs directly and are unchanged

Metadata

Metadata

Labels

component:self-managedDocs and issues related to Camunda Platform 8 Self-Managedkind/featureIssues related with features to be documented

Type

No type
No fields configured for issues without a type.

Projects

Status
🆕 Inbox

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions