---
title: "Gets details for the latest upgrade performed on this application."
method: GET
path: "/Applications/{applicationId}/$/GetUpgradeProgress"
tags: ["Application"]
---

# Gets details for the latest upgrade performed on this application.

`GET /Applications/{applicationId}/$/GetUpgradeProgress`

Returns information about the state of the latest application upgrade along with details to aid debugging application health issues.

## Path parameters

- `applicationId` string, required

## Query parameters

- `api-version` '6.0', required
- `timeout` integer

## Response `200`

The application upgrade details.

- ApplicationUpgradeProgressInfo — Describes the parameters for an application upgrade.
  - `Name` string — The name of the target application, including the 'fabric:' URI scheme.
  - `TypeName` string — The application type name as defined in the application manifest.
  - `TargetApplicationTypeVersion` string — The target application type version (found in the application manifest) for the application upgrade.
  - `UpgradeDomains` UpgradeDomainInfo[] — List of upgrade domains and their statuses. Not applicable to node-by-node upgrades.
    - `Name` string — The name of the upgrade domain
    - `State` 'Invalid' | 'Pending' | 'InProgress' | 'Completed' — The state of the upgrade domain.
  - `UpgradeUnits` UpgradeUnitInfo[] — List of upgrade units and their statuses.
    - `Name` string — The name of the upgrade unit
    - `State` 'Invalid' | 'Pending' | 'InProgress' | 'Completed' | 'Failed' — The state of the upgrade unit.
  - `UpgradeState` 'Invalid' | 'RollingBackInProgress' | 'RollingBackCompleted' | 'RollingForwardPending' | 'RollingForwardInProgress' | 'RollingForwardCompleted' | 'Failed' — The state of the upgrade domain.
  - `NextUpgradeDomain` string — The name of the next upgrade domain to be processed. Not applicable to node-by-node upgrades.
  - `RollingUpgradeMode` 'Invalid' | 'UnmonitoredAuto' | 'UnmonitoredManual' | 'Monitored' | 'UnmonitoredDeferred' — The mode used to monitor health during a rolling upgrade. The values are UnmonitoredAuto, UnmonitoredManual, Monitored, and UnmonitoredDeferred.
  - `UpgradeDescription` ApplicationUpgradeDescription — Describes the parameters for an application upgrade. Note that upgrade description replaces the existing application description. This means that if the parameters are not specified, the existing parameters on the applications will be overwritten with the empty parameters list. This would result in the application using the default value of the parameters from the application manifest. If you do not want to change any existing parameter values, please get the application parameters first using the GetApplicationInfo query and then supply those values as Parameters in this ApplicationUpgradeDescription.
    - `Name` string, required — The name of the target application, including the 'fabric:' URI scheme.
    - `TargetApplicationTypeVersion` string, required — The target application type version (found in the application manifest) for the application upgrade.
    - `Parameters` ApplicationParameter[] — List of application parameters with overridden values from their default values specified in the application manifest.
      - `Key` string, required — The name of the parameter.
      - `Value` string, required — The value of the parameter.
    - `UpgradeKind` 'Invalid' | 'Rolling', required — The kind of upgrade out of the following possible values.
    - `RollingUpgradeMode` 'Invalid' | 'UnmonitoredAuto' | 'UnmonitoredManual' | 'Monitored' | 'UnmonitoredDeferred' — The mode used to monitor health during a rolling upgrade. The values are UnmonitoredAuto, UnmonitoredManual, Monitored, and UnmonitoredDeferred.
    - `UpgradeReplicaSetCheckTimeoutInSeconds` integer — The maximum amount of time to block processing of an upgrade domain and prevent loss of availability when there are unexpected issues. When this timeout expires, processing of the upgrade domain will proceed regardless of availability loss issues. The timeout is reset at the start of each upgrade domain. Valid values are between 0 and 42949672925 inclusive. (unsigned 32-bit integer).
    - `ForceRestart` boolean — If true, then processes are forcefully restarted during upgrade even when the code version has not changed (the upgrade only changes configuration or data).
    - `SortOrder` 'Invalid' | 'Default' | 'Numeric' | 'Lexicographical' | 'ReverseNumeric' | 'ReverseLexicographical' — Defines the order in which an upgrade proceeds through the cluster.
    - `MonitoringPolicy` MonitoringPolicyDescription — Describes the parameters for monitoring an upgrade in Monitored mode.
      - `FailureAction` 'Invalid' | 'Rollback' | 'Manual' — The compensating action to perform when a Monitored upgrade encounters monitoring policy or health policy violations. Invalid indicates the failure action is invalid. Rollback specifies that the upgrade will start rolling back automatically. Manual indicates that the upgrade will switch to UnmonitoredManual upgrade mode.
      - `HealthCheckWaitDurationInMilliseconds` string — The amount of time to wait after completing an upgrade domain before applying health policies. It is first interpreted as a string representing an ISO 8601 duration. If that fails, then it is interpreted as a number representing the total number of milliseconds.
      - `HealthCheckStableDurationInMilliseconds` string — The amount of time that the application or cluster must remain healthy before the upgrade proceeds to the next upgrade domain. It is first interpreted as a string representing an ISO 8601 duration. If that fails, then it is interpreted as a number representing the total number of milliseconds.
      - `HealthCheckRetryTimeoutInMilliseconds` string — The amount of time to retry health evaluation when the application or cluster is unhealthy before FailureAction is executed. It is first interpreted as a string representing an ISO 8601 duration. If that fails, then it is interpreted as a number representing the total number of milliseconds.
      - `UpgradeTimeoutInMilliseconds` string — The amount of time the overall upgrade has to complete before FailureAction is executed. It is first interpreted as a string representing an ISO 8601 duration. If that fails, then it is interpreted as a number representing the total number of milliseconds.
      - `UpgradeDomainTimeoutInMilliseconds` string — The amount of time each upgrade domain has to complete before FailureAction is executed. It is first interpreted as a string representing an ISO 8601 duration. If that fails, then it is interpreted as a number representing the total number of milliseconds.
    - `ApplicationHealthPolicy` ApplicationHealthPolicy — Defines a health policy used to evaluate the health of an application or one of its children entities.
      - `ConsiderWarningAsError` boolean — Indicates whether warnings are treated with the same severity as errors.
      - `MaxPercentUnhealthyDeployedApplications` integer — The maximum allowed percentage of unhealthy deployed applications. Allowed values are Byte values from zero to 100. The percentage represents the maximum tolerated percentage of deployed applications that can be unhealthy before the application is considered in error. This is calculated by dividing the number of unhealthy deployed applications over the number of nodes where the application is currently deployed on in the cluster. The computation rounds up to tolerate one failure on small numbers of nodes. Default percentage is zero.
      - `DefaultServiceTypeHealthPolicy` ServiceTypeHealthPolicy — Represents the health policy used to evaluate the health of services belonging to a service type.
        - `MaxPercentUnhealthyPartitionsPerService` integer — The maximum allowed percentage of unhealthy partitions per service. Allowed values are Byte values from zero to 100 The percentage represents the maximum tolerated percentage of partitions that can be unhealthy before the service is considered in error. If the percentage is respected but there is at least one unhealthy partition, the health is evaluated as Warning. The percentage is calculated by dividing the number of unhealthy partitions over the total number of partitions in the service. The computation rounds up to tolerate one failure on small numbers of partitions. Default percentage is zero.
        - `MaxPercentUnhealthyReplicasPerPartition` integer — The maximum allowed percentage of unhealthy replicas per partition. Allowed values are Byte values from zero to 100. The percentage represents the maximum tolerated percentage of replicas that can be unhealthy before the partition is considered in error. If the percentage is respected but there is at least one unhealthy replica, the health is evaluated as Warning. The percentage is calculated by dividing the number of unhealthy replicas over the total number of replicas in the partition. The computation rounds up to tolerate one failure on small numbers of replicas. Default percentage is zero.
        - `MaxPercentUnhealthyServices` integer — The maximum allowed percentage of unhealthy services. Allowed values are Byte values from zero to 100. The percentage represents the maximum tolerated percentage of services that can be unhealthy before the application is considered in error. If the percentage is respected but there is at least one unhealthy service, the health is evaluated as Warning. This is calculated by dividing the number of unhealthy services of the specific service type over the total number of services of the specific service type. The computation rounds up to tolerate one failure on small numbers of services. Default percentage is zero.
      - `ServiceTypeHealthPolicyMap` ServiceTypeHealthPolicyMapItem[] — Defines a ServiceTypeHealthPolicy per service type name. The entries in the map replace the default service type health policy for each specified service type. For example, in an application that contains both a stateless gateway service type and a stateful engine service type, the health policies for the stateless and stateful services can be configured differently. With policy per service type, there's more granular control of the health of the service. If no policy is specified for a service type name, the DefaultServiceTypeHealthPolicy is used for evaluation.
        - `Key` string, required — The key of the service type health policy map item. This is the name of the service type.
        - `Value` ServiceTypeHealthPolicy, required — Represents the health policy used to evaluate the health of services belonging to a service type.
          - `MaxPercentUnhealthyPartitionsPerService` integer — The maximum allowed percentage of unhealthy partitions per service. Allowed values are Byte values from zero to 100 The percentage represents the maximum tolerated percentage of partitions that can be unhealthy before the service is considered in error. If the percentage is respected but there is at least one unhealthy partition, the health is evaluated as Warning. The percentage is calculated by dividing the number of unhealthy partitions over the total number of partitions in the service. The computation rounds up to tolerate one failure on small numbers of partitions. Default percentage is zero.
          - `MaxPercentUnhealthyReplicasPerPartition` integer — The maximum allowed percentage of unhealthy replicas per partition. Allowed values are Byte values from zero to 100. The percentage represents the maximum tolerated percentage of replicas that can be unhealthy before the partition is considered in error. If the percentage is respected but there is at least one unhealthy replica, the health is evaluated as Warning. The percentage is calculated by dividing the number of unhealthy replicas over the total number of replicas in the partition. The computation rounds up to tolerate one failure on small numbers of replicas. Default percentage is zero.
          - `MaxPercentUnhealthyServices` integer — The maximum allowed percentage of unhealthy services. Allowed values are Byte values from zero to 100. The percentage represents the maximum tolerated percentage of services that can be unhealthy before the application is considered in error. If the percentage is respected but there is at least one unhealthy service, the health is evaluated as Warning. This is calculated by dividing the number of unhealthy services of the specific service type over the total number of services of the specific service type. The computation rounds up to tolerate one failure on small numbers of services. Default percentage is zero.
    - `InstanceCloseDelayDurationInSeconds` integer — Duration in seconds, to wait before a stateless instance is closed, to allow the active requests to drain gracefully. This would be effective when the instance is closing during the application/cluster upgrade, only for those instances which have a non-zero delay duration configured in the service description. See InstanceCloseDelayDurationSeconds property in $ref: "#/definitions/StatelessServiceDescription.yaml" for details. Note, the default value of InstanceCloseDelayDurationInSeconds is 4294967295, which indicates that the behavior will entirely depend on the delay configured in the stateless service description.
    - `ManagedApplicationIdentity` ManagedApplicationIdentityDescription — Managed application identity description.
      - `TokenServiceEndpoint` string — Token service endpoint.
      - `ManagedIdentities` ManagedApplicationIdentity[] — A list of managed application identity objects.
        - `Name` string, required — The name of the identity.
        - `PrincipalId` string — The identity's PrincipalId.
  - `UpgradeDurationInMilliseconds` string — The estimated total amount of time spent processing the overall upgrade.
  - `UpgradeDomainDurationInMilliseconds` string — The estimated total amount of time spent processing the current upgrade domain.
  - `UnhealthyEvaluations` HealthEvaluationWrapper[] — List of health evaluations that resulted in the current aggregated health state.
    - `HealthEvaluation` HealthEvaluation — Represents a health evaluation which describes the data and the algorithm used by health manager to evaluate the health of an entity.
      - `Kind` 'Invalid' | 'Event' | 'Replicas' | 'Partitions' | 'DeployedServicePackages' | 'DeployedApplications' | 'Services' | 'Nodes' | 'Applications' | 'SystemApplication' | 'UpgradeDomainDeployedApplications' | 'UpgradeDomainNodes' | 'Replica' | 'Partition' | 'DeployedServicePackage' | 'DeployedApplication' | 'Service' | 'Node' | 'Application' | 'DeltaNodesCheck' | 'UpgradeDomainDeltaNodesCheck' | 'ApplicationTypeApplications' | 'NodeTypeNodes', required — The health manager in the cluster performs health evaluations in determining the aggregated health state of an entity. This enumeration provides information on the kind of evaluation that was performed. Following are the possible values.
      - `AggregatedHealthState` 'Invalid' | 'Ok' | 'Warning' | 'Error' | 'Unknown' — The health state of a Service Fabric entity such as Cluster, Node, Application, Service, Partition, Replica etc.
      - `Description` string — Description of the health evaluation, which represents a summary of the evaluation process.
  - `CurrentUpgradeDomainProgress` CurrentUpgradeDomainProgressInfo — Information about the current in-progress upgrade domain. Not applicable to node-by-node upgrades.
    - `DomainName` string — The name of the upgrade domain
    - `NodeUpgradeProgressList` NodeUpgradeProgressInfo[] — List of upgrading nodes and their statuses
      - `NodeName` string — The name of a Service Fabric node.
      - `UpgradePhase` 'Invalid' | 'PreUpgradeSafetyCheck' | 'Upgrading' | 'PostUpgradeSafetyCheck' — The state of the upgrading node.
      - `PendingSafetyChecks` SafetyCheckWrapper[] — List of pending safety checks
        - `SafetyCheck` SafetyCheck — Represents a safety check performed by service fabric before continuing with the operations. These checks ensure the availability of the service and the reliability of the state.
          - `Kind` 'Invalid' | 'EnsureSeedNodeQuorum' | 'EnsurePartitionQuorum' | 'WaitForPrimaryPlacement' | 'WaitForPrimarySwap' | 'WaitForReconfiguration' | 'WaitForInbuildReplica' | 'EnsureAvailability', required — The kind of safety check performed by service fabric before continuing with the operations. These checks ensure the availability of the service and the reliability of the state. Following are the kinds of safety checks.
      - `UpgradeDuration` string — The estimated time spent processing the node since it was deactivated during a node-by-node upgrade.
  - `CurrentUpgradeUnitsProgress` CurrentUpgradeUnitsProgressInfo — Information about the current in-progress upgrade units.
    - `DomainName` string — The name of the upgrade domain. Not applicable to node-by-node upgrades.
    - `NodeUpgradeProgressList` NodeUpgradeProgressInfo[] — List of upgrading nodes and their statuses
      - `NodeName` string — The name of a Service Fabric node.
      - `UpgradePhase` 'Invalid' | 'PreUpgradeSafetyCheck' | 'Upgrading' | 'PostUpgradeSafetyCheck' — The state of the upgrading node.
      - `PendingSafetyChecks` SafetyCheckWrapper[] — List of pending safety checks
        - `SafetyCheck` SafetyCheck — Represents a safety check performed by service fabric before continuing with the operations. These checks ensure the availability of the service and the reliability of the state.
          - `Kind` 'Invalid' | 'EnsureSeedNodeQuorum' | 'EnsurePartitionQuorum' | 'WaitForPrimaryPlacement' | 'WaitForPrimarySwap' | 'WaitForReconfiguration' | 'WaitForInbuildReplica' | 'EnsureAvailability', required — The kind of safety check performed by service fabric before continuing with the operations. These checks ensure the availability of the service and the reliability of the state. Following are the kinds of safety checks.
      - `UpgradeDuration` string — The estimated time spent processing the node since it was deactivated during a node-by-node upgrade.
  - `StartTimestampUtc` string — The estimated UTC datetime when the upgrade started.
  - `FailureTimestampUtc` string — The estimated UTC datetime when the upgrade failed and FailureAction was executed.
  - `FailureReason` 'None' | 'Interrupted' | 'HealthCheck' | 'UpgradeDomainTimeout' | 'OverallUpgradeTimeout' — The cause of an upgrade failure that resulted in FailureAction being executed.
  - `UpgradeDomainProgressAtFailure` FailureUpgradeDomainProgressInfo — Information about the upgrade domain progress at the time of upgrade failure.
    - `DomainName` string — The name of the upgrade domain
    - `NodeUpgradeProgressList` NodeUpgradeProgressInfo[] — List of upgrading nodes and their statuses
      - `NodeName` string — The name of a Service Fabric node.
      - `UpgradePhase` 'Invalid' | 'PreUpgradeSafetyCheck' | 'Upgrading' | 'PostUpgradeSafetyCheck' — The state of the upgrading node.
      - `PendingSafetyChecks` SafetyCheckWrapper[] — List of pending safety checks
        - `SafetyCheck` SafetyCheck — Represents a safety check performed by service fabric before continuing with the operations. These checks ensure the availability of the service and the reliability of the state.
          - `Kind` 'Invalid' | 'EnsureSeedNodeQuorum' | 'EnsurePartitionQuorum' | 'WaitForPrimaryPlacement' | 'WaitForPrimarySwap' | 'WaitForReconfiguration' | 'WaitForInbuildReplica' | 'EnsureAvailability', required — The kind of safety check performed by service fabric before continuing with the operations. These checks ensure the availability of the service and the reliability of the state. Following are the kinds of safety checks.
      - `UpgradeDuration` string — The estimated time spent processing the node since it was deactivated during a node-by-node upgrade.
  - `UpgradeStatusDetails` string — Additional detailed information about the status of the pending upgrade.
  - `IsNodeByNode` boolean — Indicates whether this upgrade is node-by-node.

## Other responses

- `default` — The detailed error response.

---

[API](https://skmtc.net/azure/apis/servicefabric-servicefabric.md) · [All operations](https://skmtc.net/azure/apis/servicefabric-servicefabric/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/azure/servicefabric-servicefabric/versions/6ebed3032b57/schema)
