public async Task <IActionResult> Address(CertificateAddressViewModel vm)
        {
            var certData = await GetCertificateData(vm.Id);

            if (ModelState.IsValid && vm.AddressHasChanged(certData))
            {
                // when address has been changed the complete journey is required
                SessionService.SetRedirectToCheck(false);
            }

            if (vm.SendTo == CertificateSendTo.Apprentice)
            {
                return(await SaveViewModel(vm,
                                           returnToIfModelNotValid : "~/Views/Certificate/Address.cshtml",
                                           nextAction : RedirectToAction("ConfirmAddress", "CertificateAddress"),
                                           action : CertificateActions.Address));
            }
            else
            {
                return(await SaveViewModel(vm,
                                           returnToIfModelNotValid : "~/Views/Certificate/Address.cshtml",
                                           nextAction : RedirectToAction("Recipient", "CertificateAddress"),
                                           action : CertificateActions.Address));
            }
        }