Reviewing Mule App Versioning on Runtime Fabric | MuleSoft Documentation
# Reviewing Mule App Versioning on Runtime Fabric
When an application is deployed to Runtime Fabric, Runtime Manager automatically versions the application and its configuration. Application versioning enables you to:
  * View the configuration change history of the application.
  * Roll back the configurations to an earlier version in case the currently applied configuration has issues or is unstable.
  * View the application status. Possible values are:
    * Running: At least one replica is receiving traffic (Started state).
    * Not running: None of the replicas are receiving traffic.
    * Unknown: The target is disconnected.
  * Make updates to a deployed application’s configuration, including:
    * The application package.
    * Application deployment package version.
    * Deployment target settings, such as runtime version, number of replicas, and whether the application is running in cluster mode.
    * Resource allocations, including number of cores and memory allocation.
    * Ingress and property values.


## Access the Application’s Settings Page
  1. Sign into Anypoint Platform and navigate to **Runtime Manager**
The **Applications** page is displayed.
  2. From the **Applications** page, select an application deployed to Runtime Fabric.
  3. Open the management panel on the right side.
  4. On the management panel, click the **Manage Application** button.
The **Settings** page displays information about the application’s status, configuration history, and other useful information about the application.
In the **Config changes** tab on the application’s **Settings** page. Runtime Fabric displays each change to the successfully deployed application configuration.
The last ten configuration deployments are displayed in order of their respective configuration date. Each configuration in the history has a unique hash to identify it.


The configuration history displays the last ten configuration deployments in order of creation date.   
---  
The **All changes** tab displays a history of versions created from the configuration deployment, and the actions performed on each version.
## Apply Configuration Changes
  1. On the **Settings** page for the application, you can make the following changes to a deployed configuration:
     * Upload a new application package.
     * Make changes to the deployment target and resource allocation.
     * Modify values for **Ingress** and **Properties**.
  2. Once your changes are made, click **Apply Changes**. At the top of the **Settings** page, a status bar appears.
  3. Click **View Status** to view the status for each replica in the deployment. Replica statuses include:
     * Started: The replica is receiving traffic.
     * Pending: The replica is waiting to start.
     * Starting: The replica is starting.
     * Deleting: The deletion of the replica is in progress.
     * Deleted: The replica has been deleted.
     * Stopping: The replica is stopping.
     * Stopped: The replica has stopped (is not receiving traffic).
     * Failed: The configuration failed to deploy.
     * Recovering: The replica is attempting to restart after terminating. The last successfully deployed configuration is retained until the new (desired) configuration is successfully deployed.
New configurations are applied as "rolling updates." For example:
     * A replica is created with the desired configuration,
     * Once that configuration is successfully applied, the replica with the old configuration is deleted,
     * This process is repeated with each replica in the deployment. This model means there is zero downtime while updates are applied to the application.
Since updates are applied as rolling updates, there will be different application versions running at the same time until the update is completed, so make sure your applications are able to run multiple versions in parallel.   
---  
Once the configuration is successfully applied and deployed, a message appears at the top of the page.
The application status, configuration identifier, date, and other information is updated in the status box. The new configuration is displayed at the top of the **Config changes** list, along with a **Last successful** label to indicate that it’s the last configuration successfully deployed.
If the updates to the configuration fail to deploy, you get an `Desired configuration wasn’t applied` message, and the **Configuration status** displays an `Update failed` label. The configuration is displayed in the **Config changes** history without a label.
In cases of failure, the deployment attempts to roll back to the last successful version of the configuration, but in certain situations, the rollback may not succeed. The status of the configuration displays `Update failed`.
If it’s the first deployment of the application the rollback version won’t be defined and in case of a failed deployment, it remains in the failed status.


## Recommendations when Deploying Stateful Mule Apps
  * MuleSoft supports persistent gateway for higher availability of applications requiring shared storage.
  * When using Mule clustering, a rolling update with a Mule runtime version that has a Hazelcast version change will generate a scenario when, at a certain point of time, the cluster will have more than a member with different Hazelcast versions. This may lead to application failure with a Hazelcast serialization error if the Hazelcast versions are incompatible. To prevent this kind of error, use the Recreate update strategy.


## Roll Back to a Previous Successful Configuration
If you deploy a configuration that has issues, you can roll back to a previous successful version of the configuration.
  1. In the **Config changes** history, select the version to which to roll back.
  2. Click **Deploy**. The configuration moves to the top of the list in the **Config changes** history and displays the new deployment date. It retains its original identifying hash.