public async Task <IActionResult> Address(CertificateAddressViewModel vm)
        {
            var username = _contextAccessor.HttpContext.User
                           .FindFirst("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn")?.Value;

            if (vm.SelectPreviousAddress)
            {
                var certificatePreviousAddress = await _certificateApiClient.GetContactPreviousAddress(username, vm.IsPrivatelyFunded);

                vm = vm.CopyFromCertificateAddress(certificatePreviousAddress);
            }

            if (!ModelState.IsValid)
            {
                vm = await InitialisePreviousAddresssesForViewModel(vm, username);
            }

            if (vm.SelectPreviousAddress)
            {
                return(await SaveViewModel(vm,
                                           returnToIfModelNotValid : "~/Views/Certificate/Address.cshtml",
                                           nextAction : RedirectToAction("Recipient", "CertificateRecipient"),
                                           action : CertificateActions.Address));
            }
            else
            {
                return(await SaveViewModel(vm,
                                           returnToIfModelNotValid : "~/Views/Certificate/Address.cshtml",
                                           nextAction : RedirectToAction("AddressSummary", "CertificateAddressSummary"),
                                           action : CertificateActions.Address));
            }
        }