diff --git a/_data/home-content.yml b/_data/home-content.yml
index f44b3461..b3ac7c76 100644
--- a/_data/home-content.yml
+++ b/_data/home-content.yml
@@ -66,8 +66,10 @@
links:
- title: Applications dashboard
localurl: /docs/deployment/applications-dashboard/
- - title: Applications
+ - title: Creating applications
localurl: /docs/deployment/create-application/
+ - title: Managing applications
+ localurl: /docs/deployment/manage-application/
- title: Images in Codefresh
localurl: /docs/deployment/images/
- title: Install Argo Rollouts
diff --git a/_data/nav.yml b/_data/nav.yml
index 2bfef560..5bf253ac 100644
--- a/_data/nav.yml
+++ b/_data/nav.yml
@@ -83,8 +83,10 @@
pages:
- title: Applications dashboard
url: "/applications-dashboard"
- - title: Applications
+ - title: Creating applications
url: "/create-application"
+ - title: Managing applications
+ url: "/manage-application"
- title: Images in Codefresh
url: "/images"
- title: Install Argo Rollouts
diff --git a/_docs/deployment/create-application.md b/_docs/deployment/create-application.md
index c5bab3b7..1bb7c700 100644
--- a/_docs/deployment/create-application.md
+++ b/_docs/deployment/create-application.md
@@ -1,5 +1,5 @@
---
-title: "Applications"
+title: "Creating applications"
description: ""
group: deployment
toc: true
@@ -7,23 +7,23 @@ toc: true
-Codefresh provides all the options and functionality to create and manage Argo CD applications in the Codefresh UI.
-* Create Argo CD applications that are fully GitOps compliant, from generating the application configuration manifest, committing it to Git, and syncing and deploying to the cluster.
- Creating an application in Codefresh includes:
- * Application definitions
- * General configuration settings
- * Advanced configuration settings
+Create applications that are fully GitOps compliant in the Codefresh UI, from generating the application configuration manifest, committing it to Git, and then syncing and deploying to the cluster.
- The Create application wizard guides you through the process of creating an application. For how-to information, see [Create an Argo CD application](#how-to-create-an-argo-cd-application).
- For example Argo CD applications, see this [repo](https://github.com/oleksandr-codefresh/argocd-example-apps){:target="_blank"}.
+Creating an application in Codefresh includes defining:
+* Application definitions
+* General configuration settings
+* Advanced configuration settings
-* Edit and delete applications
- Once the application is created and synced to the cluster, it is displayed in the Applications dashboard. Here, you can select an application to update the application's configuration settings, or delete it.
- To monitor the health and sync status, deployments, and resources for the application, see [Applications dashboard]({{site.baseurl}}/docs/deployment/applications-dashboard/).
+The create application wizard guides you through the process of creating an application. For how-to information, see [How to: Create an application](#how-to-create-an-argo-cd-application).
+For example Argo CD applications, see this [repo](https://github.com/oleksandr-codefresh/argocd-example-apps){:target="_blank"}.
+
+
+After creating an application and it is synced to the cluster, it is displayed in the Applications dashboard where you can track its health and deployments.
### Application: Definitions
Application definitions include the name, runtime, and the location of the YAML manifest. By default, the YAML manifest has the same name as that of the application. You can also define where to save the YAML file within the Git Source you select for the application by adding front slashes to denote subfolders.
+
{% include
image.html
lightbox="true"
@@ -35,8 +35,7 @@ Application definitions include the name, runtime, and the location of the YAML
%}
-### Application: General configuration settings
-
+### General configuration settings
General configuration settings define the source, destination, and sync policies for the application.
{% include
@@ -53,52 +52,33 @@ General configuration settings define the source, destination, and sync policies
The Git repository to be tracked for changes to the application's source code.
{::nomarkdown}
- ArgoCD Project: The project group to which the application belongs. A project is useful to enforce restrictions on permitted sources and targets for applications, and roles. If not defined, the application is automatically assigned to the default project, which is created automatically by Argo CD and has no restrictions. For more information, see Argo CD's documentation on Projects.
- Repository URL: The Git repo or the Helm package repo with the application source code, to be tracked for changes. If the Argo CD project is not the default project, make sure that the repo has the correct access roles for your application.
- Revision and Path: Applies to Git repositories.
- Chart: Applies to Helm repositories. The name of the Helm package with all the resource definitions for the application, and the version.
For more information, see Tracking and Deployment Strategies.
{:/}
-{::nomarkdown}
-
-{:/}
-
#### Destination
The cluster and namespace to which to deploy the application.
{::nomarkdown}- Cluster: The cluster to which to deploy the application, defined as a URL, or as the user-defined display NAME.
- Namespace: The namespace in the cluster to which to deploy the application.
{:/}
-
-{::nomarkdown}
-
-{:/}
-
+
#### Sync Settings
-##### Sync Policy
-{::nomarkdown}The synchronization policy to apply when there are differences between the desired state in Git and the actual state in the cluster.- Manual: Manually sync the changes from the Argo CD UI.
- Automatic: Automatically sync changes, with the following options if selected:
- Prune resources:When selected, removes legacy resources that do not exist currently in Git.
- Self heal: When selected, always enforces a sync to the desired state in Git, if and when there is a change to the actual state in the cluster. See Automatic self-healing.
{:/}
-
-{::nomarkdown}
-
-{:/}
-
-##### Sync Options
-{::nomarkdown}Common to both manual and automatic sync policies.- Skip schema validation: When selected, bypasses validating the YAML schema.
- Auto-create namespace: When selected, automatically create the namespace if the specified namespace does not exist in the cluster.
- Prune last: When selected, removes those resources that do not exist in the currently deployed version during the final wave of the sync operation. See Prune last.
- Apply out of sync only: When selected, syncs only those resources in the application that have been changed and are OutOfSync, instead of syncing every resource regardless of their state. This option is useful to reduce load and save time when you have thousands of resources in an application. See Selective Sync.
{:/}
-
-{::nomarkdown}
-
-{:/}
-
-##### Prune propagation policy
-{::nomarkdown}Defines how resources are pruned, applying Kubernetes cascading deletion prune policies.
+{::nomarkdown}Sync Policy: The synchronization policy to apply when there are differences between the desired state in Git and the actual state in the cluster.- Manual: Manually sync the changes from the Argo CD UI.
- Automatic: Automatically sync changes, with the following options if selected:
- Prune resources:When selected, removes legacy resources that do not exist currently in Git.
- Self heal: When selected, always enforces a sync to the desired state in Git, if and when there is a change to the actual state in the cluster. See Automatic self-healing.
{:/}
+
+{::nomarkdown}Sync Options: Common to both manual and automatic sync policies.- Skip schema validation: When selected, bypasses validating the YAML schema.
- Auto-create namespace: When selected, automatically create the namespace if the specified namespace does not exist in the cluster.
- Prune last: When selected, removes those resources that do not exist in the currently deployed version during the final wave of the sync operation. See Prune last.
- Apply out of sync only: When selected, syncs only those resources in the application that have been changed and are OutOfSync, instead of syncing every resource regardless of their state. This option is useful to reduce load and save time when you have thousands of resources in an application. See Selective Sync.
{:/}
+
+{::nomarkdown}Prune propagation policy:Defines how resources are pruned, applying Kubernetes cascading deletion prune policies.
For more information, see Kubernetes - Cascading deletion.- Foreground: The default prune propagation policy used by Argo CD. With this policy, Kubernetes changes the state of the owner resource to `deletion in progress`, until the controller deletes the dependent resources and finally the owner resource itself.
- Background: When selected, Kubernetes deletes the owner resource immediately, and then deletes the dependent resources in the background.
- Orphan: When selected, Kubernetes deletes the dependent resources that remain orphaned after the owner resource is deleted.
{:/}
All Prune propagation policies can be used with:
-**Replace**: When selected, Argo CD executes `kubectl replace` or `kubectl create`, instead of the default `kubectl apply` to enforce the changes in Git. This action will potentially recreate resources and should be used with care. See [Replace Resource Instead Of Applying Change](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/#replace-resource-instead-of-applying-changes){:target="_blank"}.
+
+
+**Replace**: When selected, Argo CD executes `kubectl replace` or `kubectl create`, instead of the default `kubectl apply` to enforce the changes in Git. This action will potentially recreate resources and should be used with care. See [Replace Resource Instead Of Applying Change](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/#replace-resource-instead-of-applying-changes){:target="_blank"}.
+
**Retry**: When selected, retries a failed sync operation, based on the retry settings configured:
* Maximum number of sync retries (**Limit**)
* Duration of each retry attempt in seconds, minutes, or hours (**Duration**)
* Maximum duration permitted for each retry (**Max Duration**)
* Factor by which to multiply the Duration in the event of a failed retry (**Factor**). A factor of 2 for example, attempts the second retry in 2 X 2 seconds, where 2 seconds is the Duration.
+
+
-{::nomarkdown}
-
-{:/}
-
-### Application: Advanced configuration settings
-
-Advanced settings define the tool used to create the application, and related toll-specific settings.
+### Advanced configuration settings
+Advanced settings define the tool used to create the application, and related settings.
{% include
image.html
@@ -134,11 +114,8 @@ The tool used to create the application's manifests. Codefresh supports definin
For example applications, go to the [Argo CD example applications repo](https://github.com/argoproj/argocd-example-apps){:target="_blank"}.
-{::nomarkdown}
-
-{:/}
-### Create an application
+### How to: create an Argo CD application
Create a new application from the Applications dashboard with the Add Application wizard.
Edit the manifest directly in YAML mode, or define the settings in the Form mode. Toggle between the modes as convenient. You can also edit the YAML manifest directly at all stages, after defining configuration settings, and before the final commit.
@@ -151,7 +128,7 @@ Review:
**How to**
1. In the Codefresh UI, go to [Applications](https://g.codefresh.io/2.0/applications-dashboard?sort=desc-lastUpdated){:target="\_blank"}.
-1. On the top-right, select **Add Application**.
+1. Select **Add Application** on the top-right.
1. In the Add Application panel, add definitions for the application:
* Application name: Must be unique within the cluster.
* Runtime: The runtime to associate with the application.
@@ -217,111 +194,10 @@ Review:
Your application is first committed to Git, and then synced to the cluster which may take a few moments.
-Track the application in the [Applications dashboard](https://g.codefresh.io/2.0/applications-dashboard){:target="_blank"}.
-
-{::nomarkdown}
-
-{:/}
-
-### Update application configuration
-Update General or Advanced configuration settings for a deployed application. Once the application is deployed to the cluster, the Configuration tab is available on selecting the application in the Applications dashboard.
-
-> You cannot change application definitions (the application name and the selected runtime), and the Git Source selected for the application.
-
-**How to**
-
-1. In the Codefresh UI, go to the [Applications dashboard](https://g.codefresh.io/2.0/applications-dashboard){:target="\_blank"}.
-1. Select the application to update, and then select the **Configuration** tab.
-
-{% include
- image.html
- lightbox="true"
- file="/images/applications/edit-app-configuration-tab.png"
- url="/images/applications/edit-app-configuration-tab.png"
- alt="Configuration tab with application settings"
- caption="Configuration tab with application settings"
- max-width="70%"
- %}
-
-{:start="3"}
-1. Update the **General** or **Advanced** configuration settings as needed:
- [General configuration](#general-configuration-settings)
- [Advanced configuration](#advanced-configuration-settings)
- When you change a setting, the Commit and Discard Changes buttons are displayed.
-
- {% include
- image.html
- lightbox="true"
- file="/images/applications/edit-app-change-setting.png"
- url="/images/applications/edit-app-change-setting.png"
- alt="Edit application settings"
- caption="Edit application settings"
- max-width="70%"
- %}
-
-{:start="4"}
-1. Do one of the following:
- * To _commit all changes_, click **Commit**. This final commit screen is displayed with a diff view of the changes.
- * To _undo all changes_ and return to the previous settings, click **Discard Changes**. This action removes all the changes you have made so far and returns you to the Applications dashboard.
-
- >If you change settings and then restore existing values for the same, Codefresh automatically removes the Commit and Discard Changes buttons as there are no new changes to commit or discard.
-
- {% include
- image.html
- lightbox="true"
- file="/images/applications/edit-app-diff-view.png"
- url="/images/applications/edit-app-diff-view.png"
- alt="Commit changes with diff view"
- caption="Commit changes with diff view"
- max-width="70%"
- %}
-
-{:start="5"}
-1. To confirm all changes, at the bottom-left, click **Commit**.
- The changes are committed to Git, and in a few moments also synced to the cluster.
-
-{::nomarkdown}
-
-{:/}
-
-### Delete an application
-Delete an application from Codefresh. Deleting an application deletes the manifest from the Git repository, and then from the cluster where it is deployed. When deleted from the cluster, the application is removed from the Applications dashboard in Codefresh.
-
->The Prune resources setting determines the scope of the delete action. When selected, both the application and its resources are deleted. When not selected, only the application is deleted. For more information, review [Sync settings](#sync-settings) in this article.
-Codefresh warns you of the implication of deleting the selected application in the Delete form.
-
-1. In the Codefresh UI, go to the [Applications dashboard](https://g.codefresh.io/2.0/applications-dashboard){:target="\_blank"}.
-1. Select the application to delete.
-1. Click the three dots for additional actions, and select **Delete**.
-
- {% include
- image.html
- lightbox="true"
- file="/images/applications/app-delete-option.png"
- url="/images/applications/app-delete-option.png"
- alt="Delete application"
- caption="Delete application"
- max-width="80%"
- %}
-
- Pay attention to the impact of the delete action for the selected application that Codefresh displays.
-
- {% include
- image.html
- lightbox="true"
- file="/images/applications/delete-app-prune-affects.png"
- url="/images/applications/delete-app-prune-affects.png"
- alt="Prune setting impact on deleting application"
- caption="Prune setting impact on deleting application"
- max-width="70%"
- %}
-
-{:start="4"}
-1. To confirm, click **Commit & Delete**.
+Track the application in the [Applications](https://g.codefresh.io/2.0/applications-dashboard?sort=desc-lastUpdated){:target="_blank"} dashboard.
-{::nomarkdown}
-
-{:/}
+### Related information
+[Applications dashboard]({{site.baseurl}}/docs/deployment/applications-dashboard/)
+[Managing applications]({{site.baseurl}}/docs/deployment/manage-application/)
+[Images in Codefresh]({{site.baseurl}}/docs/deployment/images/)
-### What to read next
-[DORA metrics]({{site.baseurl}}/docs/reporting/dora-metrics/)
\ No newline at end of file
diff --git a/_docs/deployment/manage-application.md b/_docs/deployment/manage-application.md
new file mode 100644
index 00000000..b0e03a8e
--- /dev/null
+++ b/_docs/deployment/manage-application.md
@@ -0,0 +1,291 @@
+---
+title: "Managing applications"
+description: ""
+group: deployment
+toc: true
+---
+
+Creating and deploying applications is the first part of the continuous deployment/delivery process. An equally important part is optimizing deployed applications when needed, including editing application definitions, and synchronizing or refreshing them on-demand.
+* Edit applications
+ Optimize deployed applications by changing application definitions when needed.
+
+* Synchronize applications
+ Sync applications on-demand by manually applying sync options or selecting which resources to sync.
+
+
+
+### Edit application configuration
+Optimize deployed applications by updating General or Advanced configuration settings.
+
+> You cannot change application definitions (the application name and the selected runtime), and the Git Source selected for the application.
+
+**How to**
+
+1. In the Codefresh UI, go to the [Applications dashboard](https://g.codefresh.io/2.0/applications-dashboard){:target="\_blank"}.
+1. Do one of the following:
+ * Select the application to update, and then from the context menu on the right, select **Edit**.
+ * Click the application and then select the **Configuration** tab.
+
+{% include
+ image.html
+ lightbox="true"
+ file="/images/applications/edit-app-configuration-tab.png"
+ url="/images/applications/edit-app-configuration-tab.png"
+ alt="Configuration tab with application settings"
+ caption="Configuration tab with application settings"
+ max-width="70%"
+ %}
+
+{:start="3"}
+1. Update the **General** or **Advanced** configuration settings as needed:
+ [General configuration]({{site.baseurl}}docs/deployment/create-application/#application-general-configuration-settings)
+ [Advanced configuration]({{site.baseurl}}docs/deployment/create-application/#advanced-configuration-settings)
+ When you change a setting, the Commit and Discard Changes buttons are displayed.
+
+ {% include
+ image.html
+ lightbox="true"
+ file="/images/applications/edit-app-change-setting.png"
+ url="/images/applications/edit-app-change-setting.png"
+ alt="Edit application settings"
+ caption="Edit application settings"
+ max-width="70%"
+ %}
+
+{:start="4"}
+1. Do one of the following:
+ * To _commit all changes_, click **Commit**. This final commit screen is displayed with a diff view of the changes.
+ * To _undo all changes_ and return to the previous settings, click **Discard Changes**. This action removes all the changes you have made so far and returns you to the Applications dashboard.
+
+ >If you change settings and then restore existing values for the same, Codefresh automatically removes the Commit and Discard Changes buttons as there are no new changes to commit or discard.
+
+ {% include
+ image.html
+ lightbox="true"
+ file="/images/applications/edit-app-diff-view.png"
+ url="/images/applications/edit-app-diff-view.png"
+ alt="Commit changes with diff view"
+ caption="Commit changes with diff view"
+ max-width="70%"
+ %}
+
+{:start="5"}
+1. To confirm all changes, at the bottom-left, click **Commit**.
+ The changes are committed to Git, and in a few moments also synced to the cluster.
+
+{::nomarkdown}
+
+{:/}
+
+### On-demand application sync
+Synchonize applications manually to reconcile the desired state with the live state.
+Instead of waiting for Argo CD to detect differences between the desired and live states and initate the sync if automated sync is enabled, expedite Git-to-cluster sync by selecting the relevant sync options or selecting the specific resources to sync.
+On-demand application sync is useful if you have updated only a few resources.
+
+Manual application sync options are grouped into:
+* Revision settings with branch and Kubernetes apply options
+* Additional settings with sync options as in the General application settings
+* Synchonize Resource settings to selectively sync resources
+
+> The sync options selected for manual sync override the sync options defined for the application.
+
+For how-to instructions, see [Manually synchronize an application](#manually-synchronize-an-application).
+
+{::nomarkdown}
+
+{:/}
+
+#### Revision settings for application sync
+Revision settings determine the behavior for the branch you select.
+
+**Revision**
+The branch in Git to synchronize with the cluster.
+
+**Prune**
+When selected, removes legacy resources from the cluster that do not exist currently in the Git branch.
+
+**Apply only**
+When selected, uses the Kubernetes apply command (`kubectl apply`) to update the existing configuration with _only_ the changes.
+For more information, see [In-place updates of resources](https://kubernetes.io/docs/concepts/cluster-administration/manage-deployment/#in-place-updates-of-resources), or read this [blog](https://www.containiq.com/post/kubectl-apply-vs-create).
+
+**Dry run**
+When selected, allows you to preview the application before changes are made to the cluster.
+
+**Force**
+When selected, orphans the dependents of a deleted resource during the sync operation. This option is useful to prevent accumulation of unused resources in deployed applications.
+
+{::nomarkdown}
+
+{:/}
+
+#### Additional Options for application sync
+
+{::nomarkdown}
+
+{:/}
+
+##### Sync Options
+
+* **Skip schema validation**
+ When selected, bypasses validating the YAML schema.
+* **Auto-create namespace**
+ When selected, automatically creates the namespace if the specified namespace does not exist in the cluster. If the namespace already exists, this setting is ignored.
+* **Prune last**
+ When selected, removes those resources that do not exist in the currently deployed version during the final wave of the sync operation. See [Prune last](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/#prune-last){:target="\_blank"}.
+* **Apply out of sync only**
+ When selected, syncs only those resources in the application that have been changed and are `OutOfSync`, instead of syncing every resource regardless of their state. This option is useful to reduce load and save time when you have thousands of resources in an application. See [Selective Sync](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/#selective-sync){:target="\_blank"}.
+ > Selecting this option overrides specific resources selected in `Synchronize Resource` options.
+* **Respect ignore differences**
+ When selected, Argo CD omits resources defined for the `spec.ignoreDifferences` attribute from the sync. Otherwise, Argo CD implements the desired state ad-hoc during the sync operation. See [Respect ignore difference configs](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/#respect-ignore-difference-configs){:target="\_blank"}.
+
+{::nomarkdown}
+
+{:/}
+
+##### Prune propagation policy
+{::nomarkdown}Defines how resources are pruned, applying Kubernetes cascading deletion prune policies.
+Read more at Kubernetes - Cascading deletion.- Foreground: The default prune propagation policy used by Argo CD. With this policy, Kubernetes changes the state of the owner resource to `deletion in progress`, until the controller deletes the dependent resources and finally the owner resource itself.
- Background: When selected, Kubernetes deletes the owner resource immediately, and then deletes the dependent resources in the background.
- Orphan: When selected, Kubernetes deletes the dependent resources that remain orphaned after the owner resource is deleted.
{:/}
+All Prune propagation policies can be used with:
+
+**Replace**: When selected, Argo CD executes `kubectl replace` or `kubectl create`, instead of the default `kubectl apply` to enforce the changes in Git. This action will potentially recreate resources and should be used with care. See [Replace Resource Instead Of Applying Change](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/#replace-resource-instead-of-applying-changes){:target="\_blank"}.
+
+
+**Retry**: When selected, retries a failed sync operation, based on the retry settings configured:
+* Maximum number of sync retries (**Limit**)
+* Duration of each retry attempt in seconds, minutes, or hours (**Duration**)
+* Maximum duration permitted for each retry (**Max Duration**)
+* Factor by which to multiply the Duration in the event of a failed retry (**Factor**). A factor of 2 for example, attempts the second retry in 2 X 2 seconds, where 2 seconds is the Duration.
+
+{::nomarkdown}
+
+{:/}
+
+#### Selective resource synchronization for application sync
+Synchonize Resource options allow you to selectively sync application resources. You can bypass sync settings at the application level, and directly select the resources you want to sync, by state or otherwise.
+* All resources regardless of their sync states
+* Only out-of-sync resources
+* Only selected resources
+
+> Selecting `Apply out of sync only` in Additional options, ignores specifc resources selected here.
+
+By default, Synchronize Resources displays and selects all resources in the application.
+
+ {% include
+ image.html
+ lightbox="true"
+ file="/images/applications/sync-manual-resources-form.png"
+ url="/images/applications/sync-manual-resources-form.png"
+ alt="Default settings for Synchronize Resources"
+ caption="Default settings for Synchronize Resources"
+ max-width="50%"
+ %}
+
+You can search/filter resources using part of the resource names or regex strings, and then select the resources you want to sync.
+For example, if you made changes to `api` resources or `audit` resources, type `api` or `audit` to locate the resources and then selectively sync those resources.
+
+ {% include
+ image.html
+ lightbox="true"
+ file="/images/applications/sync-manual-resource-search.png"
+ url="/images/applications/sync-manual-resource-search.png"
+ alt="Selective sync in Synchronize Resources"
+ caption="Selective sync in Synchronize Resources"
+ max-width="50%"
+ %}
+
+{::nomarkdown}
+
+{:/}
+
+#### Manually synchronize an application
+Perform on-demand app sync when needed.
+
+**Before you begin**
+
+Review:
+* [Revision settings for application sync](#revision-settings-for-application-sync)
+* [Additional options for application sync](#additional-options-for-application-sync)
+* [Selective resource synchronization for application sync](#selective-resource-synchronization-for-application-sync)
+
+**How to**
+1. In the Codefresh UI, go to the [Applications dashboard](https://g.codefresh.io/2.0/applications-dashboard){:target="\_blank"}.
+1. Select the application to sync, and do one of the following:
+ * From the application's context menu on the right, select **Synchronize**.
+ * On the top-right, click **Synchronize**.
+1. Select the **Revision** and **Additional Options** for the manual sync.
+1. Click **Next**.
+1. In **Synchronize Resources**, select the scope of the manual sync:
+ * To sync only specific resources, search for the resources by any part of their names, or define a Regex to filter by the required resources.
+ * **All**: Sync all resources regardless of their sync state.
+ * **Out of sync**: Sync _only_ resources that are `Out of sync`.
+ > If you have already selected **Apply out of sync only** in Additional Options, this option is ignored.
+ * **None**: Deselect all resources.
+
+{::nomarkdown}
+
+{:/}
+
+### Sync with Refresh/hard refresh
+You can sync applications also using the Refresh and Hard Refresh options.
+Argo CD maintains a cache of the application manifests in the Git repository. Both actions result in Argo CD syncing the application, the only difference being in the state of the cached manifests.
+
+* Refresh: Compares the desired state in Git to the live state on the cluster, and syncs the desired state with the live state on detecting changes. Manifest cache is left unchanged.
+* Hard Refresh: Also compares the desired state to the live state on the cluster, and syncs the desired state with the live state on detecting changes, and also replaces the manifest cache.
+
+> We recommend using the sync strategies to sync applications.
+
+1. In the Codefresh UI, go to the [Applications dashboard](https://g.codefresh.io/2.0/applications-dashboard){:target="\_blank"}.
+1. Drill down into the application, and from the top-right, select **Refresh**, or click the context menu and then select **Hard Refresh**.
+
+ {% include
+ image.html
+ lightbox="true"
+ file="/images/applications/app-refresh-hard-refresh.png"
+ url="/images/applications/app-refresh-hard-refresh.png"
+ alt="Application sync with Refresh/Hard Refresh"
+ caption="Application sync with Refresh/Hard Refresh"
+ max-width="60%"
+ %}
+
+
+
+
+### Related information
+[Creating applications]({{site.baseurl}}/docs/deployment/create-application/)
+[Applications dashboard]({{site.baseurl}}/docs/deployment/applications-dashboard/)
+[Images in Codefresh]({{site.baseurl}}/docs/deployment/images/)
diff --git a/images/applications/app-refresh-hard-refresh.png b/images/applications/app-refresh-hard-refresh.png
new file mode 100644
index 00000000..b4adff6c
Binary files /dev/null and b/images/applications/app-refresh-hard-refresh.png differ
diff --git a/images/applications/card-view-refresh-hard-refresh.png b/images/applications/card-view-refresh-hard-refresh.png
new file mode 100644
index 00000000..d2456d8c
Binary files /dev/null and b/images/applications/card-view-refresh-hard-refresh.png differ
diff --git a/images/applications/edit-app-change-setting.png b/images/applications/edit-app-change-setting.png
index c9e0f929..c97a47a4 100644
Binary files a/images/applications/edit-app-change-setting.png and b/images/applications/edit-app-change-setting.png differ
diff --git a/images/applications/edit-app-configuration-tab.png b/images/applications/edit-app-configuration-tab.png
index 4c04d20b..e1f8771c 100644
Binary files a/images/applications/edit-app-configuration-tab.png and b/images/applications/edit-app-configuration-tab.png differ
diff --git a/images/applications/sync-manual-resource-search.png b/images/applications/sync-manual-resource-search.png
new file mode 100644
index 00000000..83f89566
Binary files /dev/null and b/images/applications/sync-manual-resource-search.png differ
diff --git a/images/applications/sync-manual-resources-form.png b/images/applications/sync-manual-resources-form.png
new file mode 100644
index 00000000..5a8c2edf
Binary files /dev/null and b/images/applications/sync-manual-resources-form.png differ