> For the complete documentation index, see [llms.txt](https://developer.harness.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.harness.io/cloud-cost-management/cost-optimization/recommendations/1-home-recommendations.md).

# Recommendations in Harness CACM

Learn about the recommendations summary page and the various actions that you can perform on this page.

{% hint style="success" %}
This feature is in Limited GA and requires enablement. [View all early access features.](/release-notes/features.md)

{% @harness-feature-flag-access/request-feature-flag-access module="cloud-ai-cost-management" pagePath="cloud-ai-cost-management/cost-optimization/recommendations/1-home-recommendations" featureFlags="%5B%7B%22name%22%3A%22Node%20Pool%20Auto%20Inference%22%2C%22key%22%3A%22CCM\_NODEPOOL\_RECOMMENDATION\_AUTO\_INFERENCE%22%2C%22status%22%3A%22LIMITED\_GA%22%2C%22description%22%3A%22Enables%20automatic%20detection%20and%20capture%20of%20partial%20node%20pool%20recommendation%20changes.%20The%20daily%20batch%20job%20detects%20incremental%20infrastructure%20changes%20and%20records%20realized%20savings%20accordingly.%22%7D%2C%7B%22name%22%3A%22Workload%20Auto%20Inference%22%2C%22key%22%3A%22CCM\_WORKLOAD\_RECOMMENDATION\_AUTO\_INFERENCE%22%2C%22status%22%3A%22LIMITED\_GA%22%2C%22description%22%3A%22Enables%20automatic%20detection%20and%20capture%20of%20partial%20Kubernetes%20workload%20recommendation%20changes.%20The%20daily%20batch%20job%20detects%20incremental%20infrastructure%20changes%20and%20records%20realized%20savings%20accordingly.%22%7D%2C%7B%22name%22%3A%22ECS%20Auto%20Inference%22%2C%22key%22%3A%22CCM\_ECS\_RECOMMENDATION\_AUTO\_INFERENCE%22%2C%22status%22%3A%22LIMITED\_GA%22%2C%22description%22%3A%22Enables%20automatic%20detection%20and%20capture%20of%20partial%20ECS%20service%20recommendation%20changes.%20The%20daily%20batch%20job%20detects%20incremental%20infrastructure%20changes%20and%20records%20realized%20savings%20accordingly.%22%7D%5D" %}
{% endhint %}

{% hint style="info" %}
After you enable CACM, it may take up to 48 hours for the recommendations to appear in Cloud Costs. It depends on the time at which CACM receives the utilization data for the service.
{% endhint %}

{% hint style="success" %}
🚀 **What is New?**

We have recently introduced AWS Passthrough Recommendations as a major enhancement to Harness Cloud & AI Cost Management that provides **intelligent, action-oriented recommendations** for your AWS resources. Instead of just suggesting instance type changes, the system now analyzes your resources and recommends specific actions to optimize costs and performance.
{% endhint %}

{% hint style="info" %}
**Cost Optimization Hub**

Harness moved from Cost Explorer Hub to Cost Optimization Hub as part of this change.
{% endhint %}

## What are recommendations? <a href="#what-are-recommendations" id="what-are-recommendations"></a>

Harness CACM Recommendations are data-driven insights that help you optimize your cloud resources for cost efficiency without compromising performance. By analyzing historical usage patterns, resource configurations, and cloud provider pricing models, CACM identifies opportunities to right-size resources, eliminate waste, and implement best practices.

**Benefits of Using CACM Recommendations**

* **Reduce Azure VM Costs**: Identify underutilized virtual machines and receive rightsizing or termination suggestions to significantly reduce Azure spending.
* **Optimize AWS EC2 Instances**: Detect idle or oversized EC2 instances and get actionable guidance to select optimal instance types or eliminate unnecessary resources.
* **Clean Up Container Registry**: Identify and remove unused container images in Amazon ECR, reducing storage costs and improving registry management.
* **Enhance Cost Governance**: Implement best practices for tagging, business unit allocation, and spending patterns across AWS, GCP, and Azure to maintain financial control.
* **Improve Kubernetes Node Efficiency**: Balance cost and performance with optimized node pool configurations for your Kubernetes clusters, tailored to each cloud provider's specific requirements.
* **Right-Size Kubernetes Workloads**: Analyze CPU and memory utilization patterns to properly configure resource requests and limits, preventing waste while ensuring application performance.

## Recommendations homepage <a href="#recommendations-homepage" id="recommendations-homepage"></a>

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-4fce6e4e7c7eb0d918a687b135804b80514b64f1%2Frecommendations-output.gif?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

* **Recommendation Type**: CACM has six types of recommendations: `AZURE_INSTANCE`, `EC2_INSTANCE`, `GOVERNANCE`, `NODE_POOL` and `WORKLOAD`. For more information, go to [Recommendations per cloud provider](#recommendations-per-cloud-provider) for details on each type.
* **Cloud Provider**:
* **+ Add Filter**
  * **Generic Filters**: Cloud Account ID, Cloud Account Name, Resource ID, Resource Name, Region, Cost Category, Cluster Labels, Cloud Tags, Potential Spend(USD), Savings (USD), Governance Rule Name
  * **AWS-Specific Filters**: Instance Type
  * **Azure-Specific Filters**: VM Size, Resource Group
  * **Container-Specific Filters**: Kubernetes Cluster Name, Kubernetes Namespace, ECS Cluster Name, ECS Launch Type

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-104e15964ea7d97f1eae05a441b8859506938d21%2Foutputwo.gif?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

* **Export CSV:** Option to export your Recommendations as comma-separated values (CSV) files. Exporting allows you to use the data in other software. Export respects the filters applied by the user in the filter panel. Only comma-separated values files (CSV) are supported and the maximum number of rows allowed in one export is 10,000 rows.
* **Ignore & Reject Lists:** This contains: Ignore list and Rejected Auto-Inferences.
  * **Ignore List:** Adding resources to the Ignore list will stop Harness from displaying recommendations for those resources. You can view the Ignore list with details by clicking on "Manage Ignore List" on the overview page.
  * **Rejected Auto-Inferences:** Recommendations that were auto-inferred as applied but later rejected will appear here. Review rejection reasons and identify resources that may need to be ignored. You can see the rejected inference, recommendation type, rejected on, rejected by and on and the reason for rejection.

### Open and applied recommendations <a href="#open-and-applied-recommendations" id="open-and-applied-recommendations"></a>

{% tabs %}
{% tab title="Open Recommendations" %}

* **Open Recommendations**: List of [recommendations](#recommendations-per-cloud-provider) that are not applied yet. [All the types of recommendations](#recommendations-per-cloud-provider) are listed here. You can view:
  * Potential Monthly Savings that can be achieved with the recommendation
  * Potential Monthly Spend without applying recommendations.
  * Table with columns:
    * Resource Name
    * Recommended Action/Resource
    * Potential Monthly Savings
    * Potential Monthly Spend
    * Jira/Servicenow Ticket Status
      {% endtab %}

{% tab title="Applied Recommendations" %}

* **Applied Recommendations:** When you click on an individual recommendation, you will be able to view a detailed breakdown of the recommendation, including relevant insights, suggested actions, and any supporting information. For more information, go to [Apply recommendations](#apply-recommendations).

  <figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-a808caef3abb1c62f353e82458cfa994a676c025%2Foutput-hist.gif?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

The Applied Recommendations tab provides comprehensive visibility into your cost optimization efforts with the following key components:

* **Savings Realized:** Displays the total financial impact of all implemented recommendations, helping you quantify the ROI of your cost optimization efforts.
* **Recommendations vs. Savings Chart:** A visual trend analysis showing the correlation between applied recommendations and actual cost savings over time. The saving from applied recommendations is shown against the number of recommendations applied.
* **Breakdown of Marked as Applied:** Shows the distribution of applied recommendations by number of recommendations and associated savings to identify which optimization strategies are most frequently implemented.
* **Applied Recommendations:** Number of recommendations marked as applied and the timeperiod.
* **Details Table:** Provides a comprehensive view of each applied recommendation with the following information:
  * Resource name
  * Recommended Action/Resource
  * Monthly Savings
  * Associated ticket
  * Applied on
  * Applied by (Also shows if a recommendation was inferred )

{% hint style="info" %}
Marking a recommendation as "Applied" assumes all resources are actioned and full savings are recorded. If only a subset is applied, the user must manually update the realized savings using the “Edit savings amount” option.
{% endhint %}
{% endtab %}
{% endtabs %}

### Recommendation settings <a href="#recommendation-settings" id="recommendation-settings"></a>

{% tabs %}
{% tab title="Preferences" %}

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-af6fb5fff33c45cd49159f468bd3fbc111740efd%2Frecommendations-preferences.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

* **General Preferences:**
  * **Automatically detect when recommendations are applied** - Enables auto-detection of applied recommendations in your infrastructure.
  * **Show Recommendations on Parent Resources** - Display recommendations on Nodepool/EC2/ECS Services.
  * **Show Recommendations on Child Resources** - Display recommendations on workloads.
  * **Show Recommendations on Resources added to the IgnoreList** - Display recommendations for resources in the ignore list.
* **Resource Specific Preferences for Harness Generated Recommendations:** Recommendation Preferences for Harness Generated Recommendations (node pool and workload)

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-c77939ef5ec2fa0b0a85d2b1ae1e619722240a87%2Faccount-specific.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

* **Account-specific Resource Preferences for Cloud Provider Recommendations**: Account-Specific Resource Preferences allow you to customize recommendation calculation parameters for individual AWS cloud accounts. Instead of using a single set of recommendation parameters across all accounts, you can define different tuning parameters (presets) for specific accounts based on their unique requirements. For each resource type (Workload, Node Pool, ECS Service, EC2 Instance):

  1. Click **View Details** to open the account overrides drawer
  2. You will see:
     * **Default Preset**: The preset applied to all accounts by default
     * **Account-Specific Presets**: Custom presets assigned to specific accounts

  **Adding an Account Override**

  1. Click **View Details** for a resource type
  2. In the "Account-Specific Presets" section, click **Add Account-Specific Preset**
  3. In the modal:
     * **Select Accounts**: Choose one or more AWS accounts
     * **Select Preset**: Choose the preset to apply to these accounts
     * Optionally click **Create Preset** to create a new preset
  4. Click **Apply** to add the override
  5. Click **Save Changes** to persist your changes

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-0d0400a4d168608cd82ee5e5b7f1fdc574da800c%2Fset-preset.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

{% hint style="info" %}
New Recommendation Preferences may take up to 24 hours to fully update across the platform because preferences are applied during the next scheduled batch processing job. However, changes will be reflected immediately on the drill-down page, while the Overview page may take additional time to reflect updates.
{% endhint %}
{% endtab %}

{% tab title="Manage Presets" %}

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-d8d80040058c3644eee61bfb771ae4176b84fe94%2Fmanage-presets.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

This helps users to create and save customized configurations for their recommendations. These presets capture specific user preferences, such as tuning parameters for resource types like workloads, nodepools, ECS, and EC2 instances.

Users can fine-tune recommendations for different resource types by configuring specific tuning parameters and save presets. By default, Harness CACM has default presets for all resources but users can tune recommendations using custom values. To set custom values, click on the recommendation and expand the "Tune Recommendations" section to configure the tuning parameters.

{% tabs %}
{% tab title="Workload" %}

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-16ba081bec2e1b4054400f082fed338e05040776%2Fworkload-preset.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

| Parameter                            | Description                                                                                                                                                                                                  |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Quality of Service (QoS)**         | Choose between Burstable or Guaranteed resource allocation for workloads. Burstable allows resources to exceed requests up to limits, while Guaranteed sets requests equal to limits for stable performance. |
| **Percentage Buffer for CPU/Memory** | Additional resource margin to handle unexpected spikes in usage. Higher buffer values provide more headroom for workload fluctuations but increase resource allocation.                                      |
| {% endtab %}                         |                                                                                                                                                                                                              |

{% tab title="Nodepool" %}

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-1b90c73cea5a795167ac9010a9124a3e85a180e0%2Fnodepool-preset.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

| Parameter                            | Description                                                                                                                                                                 |
| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Minimum Node Count**               | Ensures high availability by maintaining a minimum number of nodes in the cluster. This prevents scaling down below a threshold that might impact application availability. |
| **Percentage Buffer for CPU/Memory** | Additional resource margin to handle unexpected spikes in usage. Helps prevent resource contention during peak loads while maintaining efficient resource utilization.      |
| {% endtab %}                         |                                                                                                                                                                             |

{% tab title="AWS EC2" %}

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-b9eef823617b68b43416e89ee2b9849e29d0c958%2Fec-preset.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

| Parameter                     | Description                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Instance Family Selection** | <ul><li><strong>Within the Same Instance Family:</strong> Recommendations will suggest optimized instance types within the same instance family, ensuring workload compatibility and minimizing migration complexity.</li><li><strong>Across Instance Families:</strong> Recommendations can suggest optimized instance types across different instance families, potentially unlocking greater cost savings and efficiency improvements.</li></ul> |
| {% endtab %}                  |                                                                                                                                                                                                                                                                                                                                                                                                                                                     |

{% tab title="AWS ECS" %}

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-06ed82538eea90c52ed557f7e29a0d31856f9ffd%2Fecs-preset.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

| Parameter             | Description                                                                                                                                                                                   |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Buffer Percentage** | Additional resource margin to ensure containers have sufficient resources during peak usage. Helps prevent throttling and performance issues while maintaining efficient resource allocation. |
| {% endtab %}          |                                                                                                                                                                                               |
| {% endtabs %}         |                                                                                                                                                                                               |
| {% endtab %}          |                                                                                                                                                                                               |

{% tab title="Jira Settings" %}

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-49194f83fc64940b6bdf88f9ead0d3bf12848d42%2Fticketing-tool-mapping.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

**1. Applied/Ignored Status Mapping**

Recommendations supports Jira Status Mapping. This feature allows you to automatically align recommendation states with the statuses of your Jira issues.

In **Recommendation Settings**, you can define which Jira statuses correspond to recommendations being considered **Applied** or moved to the **Ignore List**. When a linked Jira issue reaches a mapped status, the recommendation is automatically updated. You can also choose **Resolution Codes** with which the recommendation is automatically updated to **Applied**.

* **Jira Statuses that move recommendation to Applied automatically**: Choose from a list of Jira statuses. Within an hour, CCM checks if any open recommendation is linked to a Jira issue with a mapped status, the recommendation is automatically updated to **Applied**.
* **Jira Statuses that move recommendation to Ignore List automatically**: Choose from a list of Jira statuses. Within an hour, CCM checks if any open recommendation is linked to a Jira issue with a mapped status, the recommendation is automatically updated to **Ignore List**. You can also choose **Resolution Codes** with which the recommendation is automatically updated to **Ignore List**.

{% hint style="info" %}

* A Jira connector must be successfully configured for using the feature.
* This is not supported for ServiceNow.
* Statuses not specified will follow the default recommendation flow.
* Regardless of automatic status updates, users can still manually move recommendations to either the Applied or Ignore List at any time.
* Changes will apply to all future status updates.
  {% endhint %}

**2. Actual Savings Field Mapping** Map Jira custom fields to capture actual savings from applied recommendation tickets. When tickets reach the statuses configured in Section 1, the savings values from your Jira custom fields are synced to CACM. For each mapping, you need to specify:

* **Jira Project**: Select one or more Jira projects where this mapping applies
* **Issue Type**: Select one or more issue types (e.g., "Story", "Task", "Bug")
* **Savings Field**: Select the numeric custom field that contains actual savings values

**3. Default Jira Projects for Cost Categories**

Set default Jira projects for cost recommendations. When creating tickets, the project is auto-selected based on the resource's first matching cost category below. You may change the project during ticket creation.

By mapping cost categories to specific Jira projects, you ensure that recommendations reach the right stakeholders without manual routing, reducing response time and increasing the likelihood of implementation. This is especially valuable in large organizations where different teams are responsible for different resource types.

To configure this feature, click on **+Add mapping** to add a new mapping, then select the cost category, cost bucket, and Jira project.

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-774977ae8a380f662f6609a2650b02789d4f59b8%2Fcc.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>
{% endtab %}

{% tab title="Cost Settings" %}
Cost settings control which cost basis is used to calculate the **Potential Monthly Spend** and **Potential Monthly Savings** displayed across all recommendations. These settings inherit from your Account Settings defaults. Override them to apply only to Recommendations.

To configure cost settings, navigate to **Recommendations** → **Settings** → **Cost Settings**.

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-9377d54dbea0d60e342f26acfa0f6e7f3b721224%2Frecommendations-cost-settings.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

{% hint style="info" %}
Cost type changes take effect on the next job run, which may take up to 24 hours.
{% endhint %}

{% tabs %}
{% tab title="Amazon Web Services" %}

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-5d793cc651a3ead9914398e6fc580cbb5d44668a%2Frecommendations-cost-settings-aws.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

CACM surfaces AWS recommendation costs for two resource types. ECS and Nodepool recommendation costs use your account-level default cost settings.

### Passthrough recommendation costs

Passthrough recommendations cover multiple AWS resource types (including EC2 instances, ECS on Fargate, Lambda functions, EBS volumes, and Auto Scaling groups) and are pulled directly from [AWS Cost Optimization Hub](https://docs.aws.amazon.com/cost-management/latest/userguide/coh-preferences.html#coh-savings-estimation) without CACM recalculating costs. The cost type shown in Harness reflects the savings estimation setting configured in your AWS Console, not a setting you change in Harness.

{% hint style="info" %}
Changes made in the AWS Console reflect in Harness CACM after the next scheduled sync.
{% endhint %}

| Cost type                                                                                                                    | Description                                                                                                                                                                          |
| ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [Before discounts](https://docs.aws.amazon.com/cost-management/latest/userguide/coh-preferences.html#coh-savings-estimation) | The full on-demand rate with no Reserved Instance or Savings Plan discounts applied. Use this if you want to see what resources would cost without any commitments.                  |
| [After discounts](https://docs.aws.amazon.com/cost-management/latest/userguide/coh-preferences.html#coh-savings-estimation)  | Your effective cost after Reserved Instance and Savings Plan savings are factored in, spread evenly over the reservation term. Use this if your organization tracks committed spend. |

**Workload recommendation costs**

| Cost type                                                                                                        | Description                                                                                                                                                                                      |
| ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [List price](https://docs.aws.amazon.com/whitepapers/latest/how-aws-pricing-works/how-aws-pricing-works.html)    | The published retail rate with no discounts applied. This is the highest cost view, before any reservations or commitments are considered.                                                       |
| [Amortized](https://docs.aws.amazon.com/cost-management/latest/userguide/amortizing-reserved-instances.html)     | Reserved Instance and Savings Plan upfront costs spread evenly over the reservation term. For example, a $1,200 annual RI upfront charge shows as $100/month instead of a lump sum in month one. |
| [Net-amortized](https://docs.aws.amazon.com/cost-management/latest/userguide/amortizing-reserved-instances.html) | Same as Amortized, with any additional enterprise discounts and credits applied on top. Reflects your true effective monthly cost. Recommended for organizations with enterprise agreements.     |

{% hint style="info" %}

### Feature flags

The active cost type for AWS workload recommendations is controlled by account-level feature flags. The default cost type is **Amortized**.

| Feature flag                                          | Cost type applied                                                               |
| ----------------------------------------------------- | ------------------------------------------------------------------------------- |
| None (default)                                        | Amortized                                                                       |
| `CCM_K8S_COST_TRUE_UP_WITH_CUR_PUBLIC_PRICING`        | List price                                                                      |
| `CCM_K8S_COST_TRUE_UP_WITH_CUR_NET_AMORTIZED_PRICING` | Net-amortized (only when `CCM_K8S_COST_TRUE_UP_WITH_CUR_PUBLIC_PRICING` is off) |

Contact your account administrator to enable or disable these flags.
{% endhint %}
{% endtab %}

{% tab title="Google Cloud Provider" %}

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-a2248157f7e9d43dfcb74c3bbbd09ac882c197cf%2Frecommendations-cost-settings-gcp.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

Nodepool recommendation costs use your account-level default cost settings.

### Workload recommendation costs

| Cost type                                                                              | Description                                                                                                                                                                            |
| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [List price](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-schema) | The published retail rate from GCP with no discounts or credits applied. This is what you would pay with no savings programs or commitments in place. No additional toggles available. |
| [Actual](https://cloud.google.com/billing/docs/how-to/credits)                         | Your effective billed cost after applying the credits and discounts you select below. Use this to match recommendation costs to what your account actually pays.                       |

When you select **Actual**, choose which credits and discounts to include in the cost calculation. Enable the toggles that match how your account tracks GCP spend. Each enabled toggle is factored into the recommendation cost and savings shown.

**Savings Programs:**

| Toggle                                                                                                           | Description                                                                        |
| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| [Spend-based CUD discounts](https://cloud.google.com/billing/docs/how-to/commitments)                            | Discounts from Committed Use contracts based on a committed spend amount.          |
| [Legacy spend-based CUD credits](https://cloud.google.com/billing/docs/how-to/commitments)                       | Legacy form of spend-based committed use credits.                                  |
| [Resource-based CUD credits](https://cloud.google.com/compute/docs/instances/signing-up-committed-use-discounts) | Discounts from Committed Use contracts tied to specific vCPU and memory resources. |

**Invoice Level Charges:**

| Toggle | Description                                        |
| ------ | -------------------------------------------------- |
| Tax    | Applicable taxes included in the cost calculation. |

**Other Savings:**

| Toggle                                                                                          | Description                                                                                              |
| ----------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| [Promotional credits](https://cloud.google.com/billing/docs/how-to/credits)                     | One-time credits from Google promotions or trials.                                                       |
| [Sustained use discounts (SUDs)](https://cloud.google.com/compute/docs/sustained-use-discounts) | Automatic discounts for running Compute Engine resources for a significant portion of the billing month. |
| [Spending-based discounts](https://cloud.google.com/billing/docs/how-to/credits)                | Discounts earned by maintaining a minimum monthly spend commitment.                                      |
| [Subscription credits](https://cloud.google.com/billing/docs/how-to/credits)                    | Credits from GCP subscription agreements.                                                                |
| Negotiated savings                                                                              | Custom pricing negotiated with Google Cloud.                                                             |

{% hint style="info" %}

### Feature flags

The active cost type for GCP workload recommendations is controlled by account-level feature flags. The default cost type is **Actual**.

| Feature flag                                   | Cost type applied |
| ---------------------------------------------- | ----------------- |
| None (default)                                 | Actual            |
| `CCM_K8S_COST_TRUE_UP_WITH_CUR_PUBLIC_PRICING` | List price        |

Contact your account administrator to enable or disable these flags.
{% endhint %}
{% endtab %}

{% tab title="Microsoft Azure" %}

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-5af07c6d473653f41e792ccaad9553f035850369%2Frecommendations-cost-settings-azure.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

**VM** and **VMSS** recommendations are sourced from Azure Advisor. Because Azure Advisor provides only List Price cost data, CACM recalculates costs to display the cost type you select below. Nodepool recommendation costs use your account-level default cost settings.

Both **Passthrough (VM, VMSS)** and **Workload** share the same two cost type options:

| Cost type                                                                                                                       | Description                                                                                                                                   |
| ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| [Actual](https://learn.microsoft.com/en-us/azure/cost-management-billing/reservations/understand-reserved-instance-usage-ea)    | The billed cost as it appears on your invoice. For reservations, the full charge appears in the billing period of purchase.                   |
| [Amortized](https://learn.microsoft.com/en-us/azure/cost-management-billing/reservations/understand-reserved-instance-usage-ea) | Reservation costs spread evenly across the reservation term. Use this for apples-to-apples comparisons between committed and on-demand spend. |

{% hint style="info" %}

### Feature flags

The active cost type for Azure workload recommendations is controlled by account-level feature flags. The default cost type is **Actual**.

| Feature flag                               | Cost type applied |
| ------------------------------------------ | ----------------- |
| None (default)                             | Actual            |
| `CCM_AZURE_K8S_TRUEUP_WITH_AMORTIZED_COST` | Amortized         |

Contact your account administrator to enable or disable these flags.
{% endhint %}
{% endtab %}
{% endtabs %}
{% endtab %}
{% endtabs %}

## Recommendations per cloud provider <a href="#recommendations-per-cloud-provider" id="recommendations-per-cloud-provider"></a>

{% @harness-package-selector/package-selector platforms="%5B%7B%22label%22%3A%22Kubernetes%22%2C%22slug%22%3A%22kubernetes%22%2C%22path%22%3A%22cloud-cost-management%2Fcost-optimization%2Frecommendations%2F1-home-recommendations%2Fkubernetes-1-home-recommendations%22%7D%2C%7B%22label%22%3A%22AWS%22%2C%22slug%22%3A%22aws%22%2C%22path%22%3A%22cloud-cost-management%2Fcost-optimization%2Frecommendations%2F1-home-recommendations%2Faws-1-home-recommendations%22%7D%2C%7B%22label%22%3A%22GCP%22%2C%22slug%22%3A%22gcp%22%2C%22path%22%3A%22cloud-cost-management%2Fcost-optimization%2Frecommendations%2F1-home-recommendations%2Fgcp-1-home-recommendations%22%7D%2C%7B%22label%22%3A%22Azure%22%2C%22slug%22%3A%22azure%22%2C%22path%22%3A%22cloud-cost-management%2Fcost-optimization%2Frecommendations%2F1-home-recommendations%2Fazure-1-home-recommendations%22%7D%5D" %}

## Kubernetes workload utilization aggregations <a href="#kubernetes-workload-utilization-aggregations" id="kubernetes-workload-utilization-aggregations"></a>

For a Kubernetes workload recommendation, **Aggregation** refers to how CPU and memory utilization values are combined across your workload. Utilization can be aggregated using one of the following methods:

* **Time-weighted:** Weights CPU and memory utilization by the active duration of each pod.
* **Absolute:** Sums CPU and memory utilization values without adjusting for pod duration.

### Example 1 <a href="#example-1-example1" id="example-1-example1"></a>

Let us assume you want to check the CPU requests of your workload between 3 A.M. and 4 A.M. Imagine there were two pods during that duration:

* Each pod requesting 0.4 CPU
* The first pod was deleted at 3:53 A.M. The first pod was active for 53 minutes.
* The second pod was created at 3:53 A.M. The second pod was active for 7 minutes.

For **time-weighted**, the utilization value is calculated as:

`[(cpu request of pod 1) * (active time) + (cpu request of pod 2) * (active time)] / total duration = [(0.4*53) + (0.4*7)]/60 = 0.4`

For **absolute**, the utilization value is calculated as:

`(cpu request of pod 1) + (cpu request of pod 2) = 0.4 + 0.4 = 0.8`

### Example 2 <a href="#example-2-example2" id="example-2-example2"></a>

Let us assume you want to check the CPU requests of a workload with three pods in your cluster:

* Each pod requesting 0.4 CPU
* Pod 1 runs from 0-25 mins into the hour
* Pod 2 runs from 15-40 mins into the hour
* Pod 3 runs from 35-60 mins into the hour

For **time-weighted**, the utilization value is calculated as:

`[(cpu request of pod 1) * (active time) + (cpu request of pod 2) * (active time) + (cpu request of pod 3) * (active time)] / total duration = ((0.4*25) + (0.4*25) + (0.4*25))/60 = 0.5`

For **absolute**, the utilization value is calculated as:

`(cpu request of pod 1) + (cpu request of pod 2) + (cpu request of pod 3) = 0.4 + 0.4 + 0.4 = 1.2`

***

## Apply recommendations <a href="#apply-recommendations" id="apply-recommendations"></a>

Applying recommendations is easy! You just need to:

1. **Review Recommendations** - Analyze the suggested optimizations in the Recommendations dashboard.
2. **Tune Parameters** - Adjust recommendation settings to see how different configurations affect potential cost savings. For more information, go to [Recommendations per Cloud Provider](#recommendations-per-cloud-provider) for a deeper drilldown into a particular type of recommendation to understand the action required, cost calculations and tuning.
3. **Implement Changes and Track using Jira/ServiceNow** - Apply the optimizations manually in your cloud environment. [Create and manage Jira or ServiceNow tickets](#managing-recommendations-via-jira-servicenow-tickets) to monitor implementation progress.
4. **Update Status** - Mark recommendations as applied in the CACM platform once implemented. Once applied, recommendations show up in the **Applied** tab.

### Auto Inference <a href="#auto-inference" id="auto-inference"></a>

Auto Inference is a Harness Cloud & AI Cost Management feature that automatically detects and records infrastructure changes related to your recommendations, including partial adjustments, so that realized savings are tracked without requiring you to manually mark each recommendation as applied.

{% hint style="success" %}
Auto Inference runs as a daily batch job. Changes are typically detected within 24 hours.
{% endhint %}

**How partial changes are captured**

You might make incremental adjustments rather than implementing a full recommendation in one step. For example, if Harness recommends reducing a node pool from 15 nodes to 12, you might first scale it down to 13. Previously, this partial change was not captured and zero savings were recorded.

With Auto Inference enabled, the daily batch job detects the change and:

1. Creates an **Applied Recommendation** that displays two columns: **Recommended** (the original suggestion) and **Applied change** (what actually changed in your infrastructure, such as 15 → 13 nodes), along with the realized savings for that partial reduction.
2. Updates the original **Open Recommendation** to use the new state as the baseline (for example, the open recommendation now reads "currently 13 nodes, recommended 12 nodes").

Auto Inference applies to **ECS services**, **Node Pools**, and **Kubernetes Workloads**.

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-cdc8d2f56960accade691dd88b2e7ca679bdb68d%2Fauto-inference-nodepool-partial-change.jpg?alt=media" alt="Node pool auto-inferred applied recommendation showing Recommended vs Applied change columns (node count 15 → 13, recommended 12)"><figcaption><p>Click to view full size image</p></figcaption></figure>

An auto-inferred recommendation displays a banner at the top of the detail page.

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-5f2c863fc7d000e0072a9e2a764b5ef747478c94%2Fauto-inference-banner.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

**Verify and reject auto-inferred recommendations**

Auto-inferred recommendations appear under the **Applied** tab with the status "Inferred as applied." You can:

* **Verify**: Confirm the inferred savings are accurate.
* **Reject**: Flag the inference if the savings calculation is incorrect or the change was not intentional. You will be prompted to enter a reason, which is stored and visible under **Rejected Auto-Inferences** in **Ignore & Reject Lists**.

When you click **Verify**, you can confirm whether the inferred savings matched the actual amount saved for more accurate savings calculations.

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-f0a6787490e3ed66ae2f1638b8e666da0b363d0e%2Fverify-inference.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-71ec7b2ec162dd50e8a9012c2e1ed1afd67b3484%2Fauto-inference-workload-inferred.jpg?alt=media" alt="Workload auto-inferred recommendation showing the Recommended vs Applied resource changes comparison and Verify / Reject buttons"><figcaption><p>Click to view full size image</p></figcaption></figure>

Rejected inferences appear under **Rejected Auto-Inferences** in **Ignore & Reject Lists**, where you can review the reason and identify resources that may need to be ignored.

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-b2cb6136c119c260a2af80d440e007041209b6b2%2Frejected-inference.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

Filters under **Verification Status** on the Applied tab help you manage inferred recommendations:

* **Inferred - Pending Review**: Automatically detected as implemented but awaiting your verification. You can verify, reject, or edit the savings amount.
* **Inferred - Verified**: Confirmed as accurately applied.

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-c35ae3315cb50a546e9fd5e594f5f87aeb1b3374%2Fauto-inference-applied-list.jpg?alt=media" alt="Applied Recommendations list showing Inferred - pending review status in the Applied By column for node pool and workload recommendations"><figcaption><p>Click to view full size image</p></figcaption></figure>

**Manual Mark as Applied**

When you click **Mark as Applied** on an ECS, Node Pool, or Workload recommendation, the same inference logic runs immediately (within 15–20 minutes) rather than waiting for the next daily batch job. Harness fetches the current infrastructure state, records what actually changed, and creates the Applied Recommendation accordingly.

Manually applied recommendations display an **Undo Apply** button instead of the Verify/Reject options that appear on auto-inferred recommendations.

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-cc08fc8dc18fb538f1062b3e1d4f39eeafc714e4%2Fauto-inference-ecs-undo-apply.jpg?alt=media" alt="ECS recommendation manually applied, showing the Undo Apply button and Recommended vs Applied resource changes"><figcaption><p>Click to view full size image</p></figcaption></figure>

After 15–20 minutes, the details page displays the actual resource changes.

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-a842c2d57b7a32d7197f87b2684c57c52e4b2411%2Fauto-inference-ecs-manual-applied-filled.jpg?alt=media" alt="Recommendation details page showing the applied resource changes populated after inference completes"><figcaption><p>Click to view full size image</p></figcaption></figure>

**Enable Auto Inference for ECS, Node Pool, and Workload**

Auto Inference is controlled by account-level feature flags. Users can not enable these flags directly. Contact [Harness Support](mailto:support@harness.io) with your Harness Account ID to request enablement for Node Pool, Kubernetes Workload, or ECS.

Once a flag is enabled, the daily batch job automatically begins capturing changes for that resource type. No additional configuration is required.

Manual actions always take precedence. Once you manually mark a recommendation as applied or ignored, Auto Inference does not override your action.

***

## Recommendation management through Jira/ServiceNow tickets <a href="#managing-recommendations-via-jiraservicenow-tickets" id="managing-recommendations-via-jiraservicenow-tickets"></a>

### Prerequisites <a href="#prerequisites" id="prerequisites"></a>

1. Create a Jira or ServiceNow connector:
   * Steps to create a Jira connector: [Create Jira Connector](https://developer.harness.io/harness-ai/use-harness-platform/connectors/ticketing-systems/connect-to-jira)
   * Steps to create a ServiceNow connector: [Create ServiceNow Connector](https://developer.harness.io/harness-ai/use-harness-platform/connectors/ticketing-systems/connect-to-service-now)
2. Configure ticketing tool settings:
   * Navigate to **Cloud Costs** > **Setup** > **Default Settings** > **Cloud & AI Cost Management**.
   * Under **Ticketing preferences**, select the **Ticketing tool** and the **Ticketing tool connector**. The default ticketing tool is **Jira**. You can choose **ServiceNow** if that is the tool used in your organization. Switching your ticketing tool between Jira and ServiceNow results in the removal of the existing recommendation tickets.

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-c473cf6c16175798e7495d1ae45cc94fe4117e33%2Fticketing-tool-selector.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

Go to the **Recommendations** page and create tickets to apply recommendations.

1. Select **Create a ticket**. In case you have not set up your ticketing tool settings on the account level, you will see a prompt guiding you to access the **Default Settings** page to configure both the ticketing tool and the associated connector.
2. Enter the following ticket details:

{% tabs %}
{% tab title="Jira" %}

* **Jira project** - Select the Jira project where you want to create a ticket. Go to [Create Jira Issues in CD Stages](https://developer.harness.io/continuous-delivery/use-continuous-delivery/cd-building-blocks/cd-steps/ticketing-systems/create-jira-issues-in-cd-stages).
* **Issue type** - Select a Jira issue type from the list of types in the Jira project you selected. Go to [Create Jira Issues in CD Stages](https://developer.harness.io/continuous-delivery/use-continuous-delivery/cd-building-blocks/cd-steps/ticketing-systems/create-jira-issues-in-cd-stages).
* **Ticket summary** - Add a summary of the issue.
* **Description** - Add a description for the issue.
  {% endtab %}

{% tab title="ServiceNow" %}

* **Ticket Type** - Select the ticket type from the dropdown list. For example, change request, Data Management task, and so on. Based on the selected ticket type, you might need to enter more required inputs.
* **Short Description** - Enter a brief description of the task. This is the title of the ticket.
* **Description** - Enter a more detailed description about the recommendation.

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-0a0fd0ae49cf699d1448ea7d3690da619f3ea95f%2Fservicenow_Example.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

The Description field contains relevant information about the recommendation for which this ticket was created. Harness CACM retrieves the following data from ServiceNow:

When a user opens the dialog box to create a ServiceNow ticket, a request is made to obtain all possible ticket types. Here is a sample response:

```json
{
    "status": "SUCCESS",
    "data": [
        {
            "key": "asset_reclamation_request",
            "name": "Asset Reclamation Request"
        },
        {
            "key": "asset_task",
            "name": "Asset Task"
        },
        {
            "key": "business_app_request",
            "name": "Business Application Request"
        }
    ]
}
```

Once the user selects a ticket type, another request retrieves the fields associated with that ticket type to determine the required fields. Here is a sample response:

```json
{
    "data": [
        {
            "key": "parent",
            "name": "Parent",
            "required": false,
            "schema": {
                "array": false,
                "typeStr": "",
                "type": "unknown",
                "customType": null,
                "multilineText": false
            },
            "internalType": null,
            "allowedValues": [],
            "readOnly": false,
            "custom": false
        },
        {
            "key": "made_sla",
            "name": "Made SLA",
            "required": false,
            "schema": {
                "array": false,
                "typeStr": "boolean",
                "type": "boolean",
                "customType": null,
                "multilineText": false
            },
            "internalType": null,
            "allowedValues": [],
            "readOnly": false,
            "custom": false
        }
    ]
}
```

When the user clicks "Create Ticket," an API call is made to ServiceNow to create the ticket with the provided inputs. Additionally, there is an internal call that periodically checks if the ticket has been closed. Based on this status, the recommendation is moved to the applied state.
{% endtab %}

{% tab title="ServiceNow Service Request" %}

## ServiceNow service request integration <a href="#servicenow-service-request-integration" id="servicenow-service-request-integration"></a>

In ServiceNow (SNOW), a Service Request is a type of ticket that users raise when they want a standard service, resource, or information from IT or another department.

**Common examples of Service Requests include:**

* Requesting access to software applications
* Ordering new hardware resources
* Creating new email distribution lists
* Requesting password resets
* Requesting system configurations or reports

### Steps to configure a catalog item in ServiceNow <a href="#steps-to-configure-a-catalog-item-in-servicenow" id="steps-to-configure-a-catalog-item-in-servicenow"></a>

* Log in to ServiceNow as an Administrator.
* Navigate to the "Maintain Items" section.
* Click "New" in the top right corner to create a new catalog item.

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-7c46a48015f26b28c6e125649acfb8ff0b326806%2Fsnow-five.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

* Define a service catalog with the "Software" category. Ensure the name of the catalog item exactly matches "Harness CACM Recommendation" and mark it as Active.

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-c5d3b2b0a6da80dcf0cbc933df3d0c5ef9505bbe%2Fsnow-six.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

* Define variables in the catalog item so that recommendation payload can be sent with the request/ticket:

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-0439a584894dd4135cb81dfcba89e2bd30df6f43%2Fsnow-seven.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

* Use camel case convention for variable names (e.g., awsAccountId). You can provide additional data fields such as description and shortDescription.

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-b79e88983d110d2b641316346439be86fb8904ed%2Fsnow-eight.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

* The variables defined in ServiceNow will be automatically populated with values from the recommendation data (keys must match) in CCM UI.

<figure><img src="https://1217180450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FO2HVWkYMptNUG08jo8hr%2Fuploads%2Fgit-blob-822365bfdc1f6ca1b615518068ebdcab23288618%2Fsnow-ticket.png?alt=media" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>
{% endtab %}
{% endtabs %}

## FAQs <a href="#faqs" id="faqs"></a>

<details>

<summary>What filtering options are available for recommendations across different cloud providers?</summary>

Harness provides filtering support for recommendations based on cloud account identifiers and Kubernetes attributes. This allows for better cost optimization insights while maintaining alignment with perspective-based RBAC settings.

* **AWS EC2**: Filtering is supported on AWS Account ID. Nested Cost Categories are not supported.
* **AWS ECS**: Filtering is supported on AWS Account ID. Nested Cost Categories are not supported.
* **Azure VM**: Filtering is not supported.
* **Kubernetes**: Filtering is supported on Labels and Cluster Name. Nested Cost Categories are not supported.
* **Governance Recommendations**:
  * **AWS**: No filtering support.
  * **Azure**: No filtering support.
  * **GCP**: No filtering support.

Filtering support for recommendations extends to **RBAC configurations based on perspective folder access settings**, ensuring that cost-saving suggestions are appropriately scoped to the right teams.

</details>

<details>

<summary>Why are not memory metrics displayed when using Datadog integration?</summary>

If you ingest memory metrics using Datadog integration, EC2 recommendations do consider these metrics in their calculations; however, the memory utilization data is not displayed on the EC2 Recommendation page.

This occurs because:

* The CPU and memory metrics data we retrieve is typically sourced from CloudWatch
* In this case, the metrics originate from an external source (Datadog)
* These Datadog metrics are directly integrated with AWS Compute Optimizer and are utilized in generating the recommendations
* According to AWS Compute Optimizer API documentation, they do not offer support for retrieving these external utilization metrics

As a result, while the recommendations are accurately calculated using both CPU and memory data, the memory metrics themselves will not be visible in the recommendation interface.

Read more: [External metrics ingestion](https://docs.aws.amazon.com/compute-optimizer/latest/ug/external-metrics-ingestion.html)

</details>

<details>

<summary>Why should I evaluate recommendations before implementing them?</summary>

Before using recommendations in your environment, ensure that you evaluate their impact thoroughly. The person reviewing the recommendations should be able to understand the impacts identified in the recommendations, as well as the impact on the infrastructure and business.

Using recommendations without proper assessment could result in unexpected changes, such as:

* Performance degradation for critical workloads
* Reliability issues during peak usage periods
* Incompatibility with specific application requirements
* Business disruption if services become unavailable or slow

</details>

{% @harness-feedback/feedback %}
