diff --git a/changes/CHANGELOG-extended-support-cost-projection.md b/changes/CHANGELOG-extended-support-cost-projection.md
index 42523171..eafcd9a1 100644
--- a/changes/CHANGELOG-extended-support-cost-projection.md
+++ b/changes/CHANGELOG-extended-support-cost-projection.md
@@ -1,5 +1,23 @@
# What's new in Extended Support Cost Projection
+## Extended Support Cost Projection - v4.0.1
+
+**Important:** This version requires the data collection version 3.2.0+. Update to this version requires a forced and recursive update.
+
+If you have modified the Extended Support Cost Projection dashboard view queries, they will be overridden when the dashboard is updated. Consider backing-up the existing view queries if they contain custom changes you want to keep so you can re-apply them after the update takes place.
+
+To update run these commands in your CloudShell (recommended) or other terminal:
+
+```
+python3 -m ensurepip --upgrade
+pip3 install --upgrade cid-cmd
+cid-cmd update --dashboard-id extended-support-cost-projection --force --recursive
+```
+
+- Adding/Adjusting RDS, EKS and OpenSearch release calendar dates.
+- Removing year 3 start date fallback to year 1-2 start date for RDS engine versions that do not have year 3 start date. This aligns the information displayed for year 3 start date with the zero estimated cost change applied in version 4.0.0.
+
+
## Extended Support Cost Projection - v4.0.0
**Important:** This version requires the data collection version 3.2.0+. Update to this version requires a forced update. Since this is a major version upgrade, the `cid-cmd` tool will ask to confirm a recursive update or not. Please make sure to confirm the recursive update by answering **yes** to continue the update process and have the new OpenSearch dataset and Athena view deployed for the dashboard.
@@ -14,6 +32,14 @@ pip3 install --upgrade cid-cmd
cid-cmd update --dashboard-id extended-support-cost-projection --force
```
+- Adding Extended Support OpenSearch sheet.
+- Setting date range for cost estimation to be the last 30 days of usage. Estimated cost values are now always based on resource usage for the last 30 days.
+- Adjusting RDS "Year 3" estimated cost to be zero when the database engine version extended support only lasts for 2 years.
+- Adjusting visuals by adding labels that indicate the values and information displayed corresponds to the last 30 days.
+- Removing date range filter control from all sheets.
+- Adding new filter controls for engine, engine version and cluster version in the RDS, EKS and OpenSearch sheets.
+
+
## Extended Support Cost Projection - v3.1.0
**Important:** This version requires the data collection version 3.2.0+. Update to this version requires a forced and recursive update. If you have modified the Extended Support Cost Projection dashboard view queries, they will be overridden when the dashboard is updated. Consider backing-up the existing view queries if they contain custom changes you want to keep so you can re-apply them after the update takes place.
diff --git a/dashboards/extended-support-cost-projection/extended-support-cost-projection.yaml b/dashboards/extended-support-cost-projection/extended-support-cost-projection.yaml
index aea0c936..22ad7644 100644
--- a/dashboards/extended-support-cost-projection/extended-support-cost-projection.yaml
+++ b/dashboards/extended-support-cost-projection/extended-support-cost-projection.yaml
@@ -54,7 +54,7 @@ dashboards:
Expression: ifelse(isNull({year_3_start}), 0, {year_3_pricing})
Name: Year_3_Pricing_Fallback
- DataSetIdentifier: rds_extended_support_view
- Expression: ifelse(isNull({year_3_start}), {year_1_start}, {year_3_start})
+ Expression: '{year_3_start}'
Name: Year_3_Start_Fallback
ColumnConfigurations:
- Column:
@@ -4966,7 +4966,7 @@ dashboards:
center\">\n \n \n \n Extended Support Cost Projection\n\
\ \n \n \n \n
\n \n v4.0.0\n \n
\n \n v4.0.1\n \n
\n \n
\n \n
\n \n
\n Built by: Julio Chaves, Yuriy Prykhodko,\
\ Iakov Gan, Eric Christensen\n
\n \n\
@@ -5312,6 +5312,8 @@ views:
, ROW ('1.28', CAST('2024-11-27' AS timestamp), CAST('2025-11-26' AS timestamp))
, ROW ('1.29', CAST('2025-03-24' AS timestamp), CAST('2026-03-23' AS timestamp))
, ROW ('1.30', CAST('2025-07-24' AS timestamp), CAST('2026-07-23' AS timestamp))
+ , ROW ('1.31', CAST('2025-11-27' AS timestamp), CAST('2026-11-26' AS timestamp))
+ , ROW ('1.32', CAST('2026-03-24' AS timestamp), CAST('2027-03-23' AS timestamp))
)
)
, preprocessed_eks_clusters_inventory (payer_id, accountid, region, cluster_arn, cluster_name, k8s_version, collection_date, max_collection_date) AS (
@@ -5409,12 +5411,14 @@ views:
VALUES
ROW ('mysql5.7', CAST('2024-03-01' AS timestamp), CAST('2026-03-01' AS timestamp), CAST('2027-02-28' AS timestamp))
, ROW ('mysql8.0', CAST('2026-08-01' AS timestamp), CAST('2028-08-01' AS timestamp), CAST('2029-07-31' AS timestamp))
+ , ROW ('mysql8.4', CAST('2029-08-01' AS timestamp), CAST('2031-08-01' AS timestamp), CAST('2032-07-31' AS timestamp))
, ROW ('postgres11.22', CAST('2024-04-01' AS timestamp), CAST('2026-04-01' AS timestamp), CAST('2027-03-31' AS timestamp))
, ROW ('postgres12', CAST('2025-03-01' AS timestamp), CAST('2027-03-01' AS timestamp), CAST('2028-02-29' AS timestamp))
, ROW ('postgres13', CAST('2026-03-01' AS timestamp), CAST('2028-03-01' AS timestamp), CAST('2029-02-28' AS timestamp))
, ROW ('postgres14', CAST('2027-03-01' AS timestamp), CAST('2029-03-01' AS timestamp), CAST('2030-02-28' AS timestamp))
, ROW ('postgres15', CAST('2028-03-01' AS timestamp), CAST('2030-03-01' AS timestamp), CAST('2031-02-28' AS timestamp))
, ROW ('postgres16', CAST('2029-03-01' AS timestamp), CAST('2031-03-01' AS timestamp), CAST('2032-02-29' AS timestamp))
+ , ROW ('postgres17', CAST('2030-03-01' AS timestamp), CAST('2032-03-01' AS timestamp), CAST('2033-02-28' AS timestamp))
, ROW ('aurora-mysql2.11', CAST('2024-12-01' AS timestamp), null, CAST('2027-02-28' AS timestamp))
, ROW ('aurora-mysql2.12', CAST('2024-12-01' AS timestamp), null, CAST('2027-02-28' AS timestamp))
, ROW ('aurora-mysql3', CAST('2027-05-01' AS timestamp), null, CAST('2029-07-31' AS timestamp))
@@ -5424,6 +5428,7 @@ views:
, ROW ('aurora-postgresql13', CAST('2026-03-01' AS timestamp), CAST('2028-03-01' AS timestamp), CAST('2029-02-28' AS timestamp))
, ROW ('aurora-postgresql14', CAST('2027-03-01' AS timestamp), CAST('2029-03-01' AS timestamp), CAST('2030-02-28' AS timestamp))
, ROW ('aurora-postgresql15', CAST('2028-03-01' AS timestamp), CAST('2030-03-01' AS timestamp), CAST('2031-02-28' AS timestamp))
+ , ROW ('aurora-postgresql16', CAST('2029-03-01' AS timestamp), CAST('2031-03-01' AS timestamp), CAST('2032-02-28' AS timestamp))
)
)
, regions_pricing (rds_type, region_code, year_1_2_pricing, year_3_pricing) AS (
@@ -5672,8 +5677,11 @@ views:
ROW ('elasticsearch_1.5', CAST('2025-11-08' AS timestamp), CAST('2026-11-07' AS timestamp))
, ROW ('elasticsearch_2.3', CAST('2025-11-08' AS timestamp), CAST('2026-11-07' AS timestamp))
, ROW ('elasticsearch_5.1', CAST('2025-11-08' AS timestamp), CAST('2026-11-07' AS timestamp))
+ , ROW ('elasticsearch_5.2', CAST('2025-11-08' AS timestamp), CAST('2026-11-07' AS timestamp))
+ , ROW ('elasticsearch_5.3', CAST('2025-11-08' AS timestamp), CAST('2026-11-07' AS timestamp))
+ , ROW ('elasticsearch_5.4', CAST('2025-11-08' AS timestamp), CAST('2026-11-07' AS timestamp))
, ROW ('elasticsearch_5.5', CAST('2025-11-08' AS timestamp), CAST('2026-11-07' AS timestamp))
- , ROW ('elasticsearch_5.6', CAST('2025-11-08' AS timestamp), null)
+ , ROW ('elasticsearch_5.6', CAST('2025-11-08' AS timestamp), CAST('2028-11-07' AS timestamp))
, ROW ('elasticsearch_6.0', CAST('2025-11-08' AS timestamp), CAST('2026-11-07' AS timestamp))
, ROW ('elasticsearch_6.1', CAST('2025-11-08' AS timestamp), CAST('2026-11-07' AS timestamp))
, ROW ('elasticsearch_6.2', CAST('2025-11-08' AS timestamp), CAST('2026-11-07' AS timestamp))