/// <summary>
        ///     InMageRcm provider switch appliance input.
        /// </summary>
        private void InMageRcmSwitchAppliance(UpdateApplianceForReplicationProtectedItemInputProperties input)
        {
            var inMageRcmSwitchApplianceInput =
                new InMageRcmUpdateApplianceForReplicationProtectedItemInput();

            if (this.runAsAccountId != null)
            {
                inMageRcmSwitchApplianceInput.RunAsAccountId =
                    this.runAsAccountId;
            }

            input.TargetApplianceId       = this.targetApplianceId;
            input.ProviderSpecificDetails = inMageRcmSwitchApplianceInput;
        }
        /// <summary>
        ///     ProcessRecord of the command.
        /// </summary>
        public override void ExecuteSiteRecoveryCmdlet()
        {
            base.ExecuteSiteRecoveryCmdlet();

            if (this.ShouldProcess(
                    this.ReplicationProtectedItem.FriendlyName,
                    "Switch the appliance"))
            {
                // Set the Fabric Name and Protection Container Name.
                string fabricName = this.Fabric.Name;
                string protectionContainerName = Utilities.GetValueFromArmId(
                    this.ReplicationProtectedItem.ID,
                    ARMResourceTypeConstants.ReplicationProtectionContainers);

                var updateApplianceInput = new UpdateApplianceForReplicationProtectedItemInputProperties();
                if (this.ReplicationProtectedItem.ReplicationProvider.Equals(Constants.InMageRcm))
                {
                    this.InMageRcmValidateSwitchApplianceInput();
                    this.InMageRcmSwitchAppliance(updateApplianceInput);
                }
                else
                {
                    throw new InvalidOperationException(
                              string.Format(
                                  Resources.UnsupportedReplicationProviderOperation,
                                  this.ReplicationProtectedItem.ReplicationProvider,
                                  "SwitchAppliance"));
                }

                var input = new UpdateApplianceForReplicationProtectedItemInput
                {
                    Properties = updateApplianceInput
                };

                // Switch the appliance for protected item.
                var response = this.RecoveryServicesClient.SwitchAppliance(
                    fabricName,
                    protectionContainerName,
                    this.ReplicationProtectedItem.Name,
                    input);

                var jobResponse = this.RecoveryServicesClient.GetAzureSiteRecoveryJobDetails(
                    PSRecoveryServicesClient.GetJobIdFromReponseLocation(response.Location));

                this.WriteObject(new ASRJob(jobResponse));
            }
        }