Description
Our OpenSearch 3.x test environments and docker-compose examples are pinned to 3.4.0 (and one of them to 3.0.0), while the latest released OpenSearch 3.x is 3.8.0. We need to bump every OS 3.x target to 3.8.0 and confirm dotCMS still works against it.
This came out of the OpenSearch migration status thread in #feat-opensearch-upgrade (Aug 13, 2026). Todd Jacobsen:
Our docker-compose examples use opensearch 3.4 but the latest available version is 3.8. We should bump all our OS test envs to 3.8 and check for compatibility
There is added urgency: docker/docker-compose-examples/single-node-os-migration is the reference stack we are about to hand to a self-hosted customer (SS&C) so they can test the LTS→EG changeover together with the OpenSearch upgrade. It should not ship pointing at a version four minors behind.
Current state
| File |
Setting |
Pinned |
Latest |
docker/docker-compose-examples/single-node-os-migration/docker-compose.yml |
opensearch3 image |
3.4.0 |
3.8.0 |
docker/docker-compose-examples/single-node-os-migration/docker-compose.yml |
opensearch3-dashboards image |
3.0.0 |
3.8.0 |
environments/environment.properties |
docker.image.search.upgrade |
3.4.0 |
3.8.0 |
dotCMS/src/docker-compose/it-test/docker-compose.yml |
OS_IMAGE_UPGRADE default |
3.0.0 |
3.8.0 |
Note the two are already out of sync: the it-test compose fallback (3.0.0) is older than what Maven actually injects from environment.properties (3.4.0), so anyone running that compose file directly gets a different engine than CI does.
Documentation carrying the version explicitly also needs updating:
docker/docker-compose-examples/single-node-os-migration/README.md (service table)
docs/backend/OPENSEARCH_MIGRATION_TESTER_GUIDE.md (§ target engine, § service table)
Out of scope
- The ~10 other docker-compose examples (
single-node, cluster-mode, with-redis, experiments, lgtm-observability, push-publish, dev-env/Dockerfile, CLI test resources) that run opensearchproject/opensearch:1 / 1.3.6. Those are the OS 1.x product baseline, not OS 3.x test envs — moving them to 3.x would change dotCMS's default stack, which cannot happen until the migration is complete.
- Cloud Control's OpenSearch version (Will Ezell: "someone, anyone, feel free to bump the opensearch version up on cloud control") — different repository, tracked separately.
Acceptance Criteria
Priority
Medium
Additional Context
- Latest tags verified on Docker Hub on 2026-08-13:
opensearchproject/opensearch → 3.8.0; opensearchproject/opensearch-dashboards → 3.8.0; latest 1.x → 1.3.20.
- Bumping
docker.image.search.upgrade is what actually gives us the compatibility signal — that property feeds the opensearch-upgrade Maven profile (dotcms-integration/pom.xml) and every phase-suite run, so CI on the PR is the check Todd asked for.
- Related Slack thread: #feat-opensearch-upgrade — OpenSearch migration status update
Description
Our OpenSearch 3.x test environments and docker-compose examples are pinned to 3.4.0 (and one of them to 3.0.0), while the latest released OpenSearch 3.x is 3.8.0. We need to bump every OS 3.x target to
3.8.0and confirm dotCMS still works against it.This came out of the OpenSearch migration status thread in
#feat-opensearch-upgrade(Aug 13, 2026). Todd Jacobsen:There is added urgency:
docker/docker-compose-examples/single-node-os-migrationis the reference stack we are about to hand to a self-hosted customer (SS&C) so they can test the LTS→EG changeover together with the OpenSearch upgrade. It should not ship pointing at a version four minors behind.Current state
docker/docker-compose-examples/single-node-os-migration/docker-compose.ymlopensearch3image3.4.03.8.0docker/docker-compose-examples/single-node-os-migration/docker-compose.ymlopensearch3-dashboardsimage3.0.03.8.0environments/environment.propertiesdocker.image.search.upgrade3.4.03.8.0dotCMS/src/docker-compose/it-test/docker-compose.ymlOS_IMAGE_UPGRADEdefault3.0.03.8.0Note the two are already out of sync: the
it-testcompose fallback (3.0.0) is older than what Maven actually injects fromenvironment.properties(3.4.0), so anyone running that compose file directly gets a different engine than CI does.Documentation carrying the version explicitly also needs updating:
docker/docker-compose-examples/single-node-os-migration/README.md(service table)docs/backend/OPENSEARCH_MIGRATION_TESTER_GUIDE.md(§ target engine, § service table)Out of scope
single-node,cluster-mode,with-redis,experiments,lgtm-observability,push-publish,dev-env/Dockerfile, CLI test resources) that runopensearchproject/opensearch:1/1.3.6. Those are the OS 1.x product baseline, not OS 3.x test envs — moving them to 3.x would change dotCMS's default stack, which cannot happen until the migration is complete.Acceptance Criteria
docker/docker-compose-examples/single-node-os-migration/docker-compose.ymlrunsopensearchproject/opensearch:3.8.0andopensearchproject/opensearch-dashboards:3.8.0, with the header comment updated to matchenvironments/environment.propertiessetsdocker.image.search.upgrade=opensearchproject/opensearch:3.8.0dotCMS/src/docker-compose/it-test/docker-compose.ymldefaultsOS_IMAGE_UPGRADEtoopensearchproject/opensearch:3.8.0, matchingenvironment.propertiessingle-node-os-migration/README.mdservice table reports 3.8.0 for both the OS 3.x cluster and its dashboardsdocs/backend/OPENSEARCH_MIGRATION_TESTER_GUIDE.mdno longer states the target engine is "OpenSearch 3.4"opensearchproject/opensearch:3.xoropensearch-dashboards:3.xreference below3.8.0remains anywhere in the repo (verify with a repo-wide grep)OpenSearchUpgradeSuitepasses against OS 3.8.0 in CI (this suite is driven bydocker.image.search.upgrade, so the version bump exercises it automatically)opensearch_phase=all) passes against OS 3.8.0 — phases 0–3 exercise dual-write, OS reads, and the Phase 3 cutoverdocker compose up -dinsingle-node-os-migrationbrings up a healthy stack — both provisioners complete, dotCMS starts, and content indexes into the OS 3.8.0 clusterPriority
Medium
Additional Context
opensearchproject/opensearch→3.8.0;opensearchproject/opensearch-dashboards→3.8.0; latest 1.x →1.3.20.docker.image.search.upgradeis what actually gives us the compatibility signal — that property feeds theopensearch-upgradeMaven profile (dotcms-integration/pom.xml) and every phase-suite run, so CI on the PR is the check Todd asked for.