Transfer domain[Link]

Purpose

to transfer a domain to another registrar and/or registrant.

Note

this command can also be used to transfer a domain in status quarantine, see below for more details.

Before continuing you should read more about transfers.

In case the domain name is under Domain Guard, it won’t be possible to transfer the domain name. You can see if a domain name is under Domain Guard via a “check-domain v2”. If a transfer is initiated on such a domain name, a hitpoint will be attributed. The error message you will receive in case of Domain Guard is:

  • 2308 (Data management policy violation)

  • domain [%s] has invalid status (serverTransferProhibited)

The elements and tags that are relevant for DNS Belgium are specified below. Tags that are optional can be omitted without producing an XML parsing error. Some components of the command need further explanation:

  • <transfer op=”request”> Is the command tag to request a transfer. The other values for the ‘op’ attribute are not implemented.

  • <domain:name> is required. Specifies the domain name to be transferred, with or without a trailing .be.

  • <domain:authInfo> is required. Contains the authorisation code given to you by the registrant.

  • <domain:period> is optional. Is the domain validity period. Only accepted values are 1 with unit ‘y’ (year) and 12 with unit ‘m’ (month). This element can be removed. When specified, it must be 1 year or 12 months.

  • <transfer> appears only when attribute op=”request”. The following block then contains the transfer elements.

  • <dnsbe:registrant> is required. Specifies the alias of the new registrant of the transferred domain. Instead of specifying the alias, you can specify: #AUTO#, in which case the registrant info will be copied from the current registrar.

  • <dnsbe:billing>, <dnsbe:tech>, <dnsbe:onsite> are the different contact aliases of the transferred domain. Each contact should belong to the new registrar.

  • <dnsbe:ns> is optional. Contains a set of name servers, with or without IP addresses (only needed as glue records).

  • <dnsbe:nsgroup> is optional. Contains the list of name server groups.

  • <dnsbe:keygroup> is optional. Contains the list of keygroups.

  • <secDNS:keyData> is optional. Contains a list of maximum 4 keys. See the <create domain> transaction for information about the required elements.

  • <dnsbe:fromQuarantine> is optional, should be used when the domain is in quarantine, the value should be ‘true’.

Please refer to the examples to see a complete request.

Examples[Link]

A correct transfer command:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
     xmlns:dnsbe="http://www.dns.be/xml/epp/dnsbe-1.0"
     xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-be-1.0.xsd
     urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd
     http://www.dns.be/xml/epp/dnsbe-1.0 dnsbe-1.0.xsd">
<command>
  <transfer op="request">
    <domain:transfer>
      <domain:name>test-domain-2.be</domain:name>
      <domain:authInfo>
        <domain:pw>111-222-333-444-555</domain:pw>
      </domain:authInfo>
    </domain:transfer>
  </transfer>
  <extension>
    <dnsbe:ext>
      <dnsbe:transfer>
        <dnsbe:domain>
          <dnsbe:registrant>c25</dnsbe:registrant>
          <dnsbe:billing>c20</dnsbe:billing>
          <dnsbe:tech>c21</dnsbe:tech>
          <dnsbe:ns>
            <domain:hostAttr>
              <domain:hostName>ns1.superdomain.be</domain:hostName>
            </domain:hostAttr>
            <domain:hostAttr>
              <domain:hostName>ns.test.be</domain:hostName>
            </domain:hostAttr>
          </dnsbe:ns>
        </dnsbe:domain>
      </dnsbe:transfer>
    </dnsbe:ext>
  </extension>
  <clTRID>clientref-00025</clTRID>
</command>
</epp>

When a <transfer> command has been processed successfully, the server responds with an EPP response with no <resData> element.

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <trID>
      <clTRID>clientref-00025</clTRID>
      <svTRID>dnsbe-80436</svTRID>
    </trID>
  </response>
</epp>

A correct transfer from quarantine request:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
     xmlns:dnsbe="http://www.dns.be/xml/epp/dnsbe-1.0">
<command>
  <transfer op="request">
    <domain:transfer>
      <domain:name>transfer-a-domain</domain:name>
      <domain:authInfo>
        <domain:pw>ABCDEF-1234567890</domain:pw>
      </domain:authInfo>
    </domain:transfer>
  </transfer>
  <extension>
    <dnsbe:ext>
      <dnsbe:transfer>
        <dnsbe:domain>
          <dnsbe:registrant>#AUTO#</dnsbe:registrant>
          <dnsbe:billing>c47</dnsbe:billing>
          <dnsbe:tech>c50</dnsbe:tech>
          <dnsbe:ns>
            <domain:hostAttr>
              <domain:hostName>ns1.superdomain.be</domain:hostName>
            </domain:hostAttr>
            <domain:hostAttr>
              <domain:hostName>ns.test.be</domain:hostName>
            </domain:hostAttr>
          </dnsbe:ns>
        </dnsbe:domain>
        <dnsbe:fromQuarantine>true</dnsbe:fromQuarantine>
      </dnsbe:transfer>
    </dnsbe:ext>
  </extension>
  <clTRID>clientref-00026</clTRID>
</command>
</epp>

If an erroneous authorisation code has been entered in the request, the response from the system is as follows:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
 xmlns:dnsbe="http://www.dns.be/xml/epp/dnsbe-1.0">
  <response>
    <result code="2306">
      <msg>Parameter value policy error</msg>
    </result>
    <extension>
      <dnsbe:ext>
        <dnsbe:result>
          <dnsbe:msg>authorisation code is invalid</dnsbe:msg>
        </dnsbe:result>
      </dnsbe:ext>
    </extension>
    <trID>
      <clTRID>transfer-domain-06</clTRID>
      <svTRID>dnsbe-80440</svTRID>
    </trID>
  </response>
</epp>

When you try to transfer a domain name already in your portfolio, and specify the current registrant as the new registrant, you will get an error message:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
 xmlns:dnsbe="http://www.dns.be/xml/epp/dnsbe-1.0">
  <response>
    <result code="2308">
      <msg>Data management policy violation</msg>
    </result>
    <extension>
      <dnsbe:ext>
        <dnsbe:result>
          <dnsbe:msg>New registrant is the same as current registrant</dnsbe:msg>
        </dnsbe:result>
      </dnsbe:ext>
    </extension>
    <trID>
      <clTRID>clientref-00025</clTRID>
      <svTRID>dnsbe-80438</svTRID>
    </trID>
  </response>
</epp>

A correct transfer request, providing a keygroup:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
     xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd"
     xmlns:dnsbe="http://www.dns.be/xml/epp/dnsbe-1.0">
  <command>
    <transfer op="request">
      <domain:transfer>
        <domain:name>domain-2-transfer</domain:name>
        <domain:authInfo>
          <domain:pw>111-222-333-444-555</domain:pw>
        </domain:authInfo>
      </domain:transfer>
    </transfer>
    <extension>
      <dnsbe:ext>
        <dnsbe:transfer>
          <dnsbe:domain>
            <dnsbe:registrant>#auto#</dnsbe:registrant>
            <dnsbe:billing>c80</dnsbe:billing>
            <dnsbe:tech>c81</dnsbe:tech>
            <dnsbe:keygroup>mykeygroup</dnsbe:keygroup>
          </dnsbe:domain>
        </dnsbe:transfer>
      </dnsbe:ext>
    </extension>
    <clTRID>domain-transfer-keygroup-00</clTRID>
  </command>
</epp>

A transfer request can generate the same error messages as a create domain request, additional error codes/messages are:

  • 2001 (Command syntax error), with possible messages:

    • missing element (e.g. authorisation code is missing)

  • 2102 (Unimplemented option)

    • When another option than ‘request’ is used [HITPOINT]

  • 2306 (Parameter value policy error), with possible messages:

    • authorisation code is invalid

    • authorisation code has expired

    • invalid domain name [HITPOINT]

  • 2308 (Data management policy violation), with possible messages:

    • domain [$domain] has invalid status (serverTransferprohibited) [HITPOINT]

    • domain [$domain] has invalid status [HITPOINT]

    • New registrant is the same as old registrant [HITPOINT]

    • Re-using a registrant is not allowed when the domain name is already yours [HITPOINT]