Class DomainTransferRequestFlow

java.lang.Object
google.registry.flows.domain.DomainTransferRequestFlow
All Implemented Interfaces:
Flow, MutatingFlow, TransactionalFlow

@ReportingSpec(DOMAIN_TRANSFER_REQUEST) public final class DomainTransferRequestFlow extends Object implements MutatingFlow
An EPP flow that requests a transfer on a domain.

The "gaining" registrar requests a transfer from the "losing" (aka current) registrar. The losing registrar has a "transfer" time period to respond (by default five days) after which the transfer is automatically approved. Within that window, the transfer might be approved explicitly by the losing registrar or rejected, and the gaining registrar can also cancel the transfer request.

When a transfer is requested, poll messages and billing events are saved to the database with timestamps such that they only become active when the server-approval period passes. Keys to these speculative objects are saved in the domain's transfer data, and on explicit approval, rejection or cancellation of the request, they will be deleted (and in the approval case, replaced with new ones with the correct approval time).

Expected Error
FlowUtils.NotLoggedInException, FlowUtils.UnknownCurrencyEppException, ResourceFlowUtils.BadAuthInfoForResourceException, ResourceFlowUtils.ResourceDoesNotExistException, AlreadyPendingTransferException, MissingTransferRequestAuthInfoException, ObjectAlreadySponsoredException, ResourceStatusProhibitsOperationException, TransferPeriodMustBeOneYearException, InvalidTransferPeriodValueException, TransferPeriodZeroAndFeeTransferExtensionException, DomainFlowUtils.BadPeriodUnitException, DomainFlowUtils.CurrencyUnitMismatchException, DomainFlowUtils.CurrencyValueScaleException, DomainFlowUtils.FeesMismatchException, DomainFlowUtils.FeesRequiredForPremiumNameException, DomainFlowUtils.MissingBillingAccountMapException, DomainFlowUtils.NotAuthorizedForTldException, DomainFlowUtils.PremiumNameBlockedException, DomainFlowUtils.RegistrarMustBeActiveForThisOperationException, DomainFlowUtils.UnsupportedFeeAttributeException, AllocationTokenFlowUtils.AllocationTokenNotValidForDomainException, AllocationTokenFlowUtils.InvalidAllocationTokenException, AllocationTokenFlowUtils.AllocationTokenNotInPromotionException, AllocationTokenFlowUtils.AllocationTokenNotValidForRegistrarException, AllocationTokenFlowUtils.AllocationTokenNotValidForTldException, AllocationTokenFlowUtils.AlreadyRedeemedAllocationTokenException
  • Method Details

    • run

      public EppResponse run() throws EppException
      Description copied from interface: Flow
      Executes an EPP "flow" and returns a response object (or in the specific case of the "hello" flow a greeting object) that can be converted to XML and returned to the caller.

      Flows should have Flow.run() called once per instance. If a flow needs to be retried, a new instance should be created.

      Flows should get all of their parameters via injection off of FlowComponent.

      Specified by:
      run in interface Flow
      Throws:
      EppException