<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-regext-epp-same-entity-00" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="EPP Variants">Domain variant support for EPP</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-regext-epp-same-entity-00"/>
    <author initials="J." surname="Galvin" fullname="James Galvin">
      <organization>Identity Digital</organization>
      <address>
        <postal>
          <city>Bellevue, Washington</city>
          <country>US</country>
        </postal>
        <email>jgalvin@identity.digital</email>
      </address>
    </author>
    <author initials="M." surname="Bauland" fullname="Michael Bauland">
      <organization>Knipp Medien und Kommunikation GmbH</organization>
      <address>
        <postal>
          <city>Dortmund</city>
          <country>Germany</country>
        </postal>
        <email>michael.bauland@knipp.de</email>
      </address>
    </author>
    <date year="2026" month="July" day="06"/>
    <area>Applications and Real-Time</area>
    <workgroup>regext</workgroup>
    <keyword>EPP</keyword>
    <abstract>
      <?line 40?>

<t>This document defines an EPP extension allowing clients to learn about
and manipulate variant groups of domains, ie. groups of domains whose
names are equivalent in a registry-defined way and are tied to a
single registrant.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Registration Protocols Extensions Working Group mailing list (regext@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/regext/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/arnt/regext-epp-variants"/>.</t>
    </note>
  </front>
  <middle>
    <?line 47?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>EPP is defined in <xref target="RFC5730"/>. EPP commands were developed to operate on
a single object at a time. This document defines an EPP extension allowing
clients to learn about and manipulate variant groups of objects that have
a characteristic that makes them equivalent.</t>
      <t>Similar to EPP, the principal motivation for this extension was to provide a
standard Internet domain name registration extension for use between domain
name registrars and domain name registries.  This protocol provides a
means of interaction between a registrar's applications and registry
applications.  It is expected that this protocol will have additional
uses beyond domain name registration.</t>
      <t>As an example, the problem being considered is that spelling is not necessarily
uniform. For example, an è and an e may be regarded as equivalent in some languages,
and as different in others.</t>
      <t>Some registries plan to support this explicitly, with groups of
variant domains that can only be registered by the same registrant. Having the same
registrant is most commonly considered essential for equivalence, since if the domains
are intended to be equivalent then the responsibility of maintaining that equivalence
must be present. This is a specific example of the more general "Same Entity Principle",
which in this specification is defined to mean that a variant group <bcp14>MUST</bcp14> be created, managed,
and deleted by the same entity. From a registry perspective the same entity would be
registrar; from the registrar's perspective the same entity would be the registrant.</t>
      <t>This document does not define a variant or a group of variants, i.e., this document does
define what makes the domains in the variant group equivalent.
A registry policy <bcp14>MUST</bcp14> exist that specifies both that a registry supports
variant groups and that defines what domains are eligible to be a member
of a variant group. This policy <bcp14>MUST</bcp14> be agreed between a registry and a
registrar. The policy and the establishment of the agreement is outside
the scope of this specification.</t>
      <t>A common policy expression among domain registries and registrars is to define
variants in terms of the script or language in use for an Internalized Domain
Name (IDN). IDN variants can arise when different characters or sequences of
characters in an IDN are considered equivalent in a particular language or script.
Standard Label Generation Rules (LGRs) are used to specify the IDN table that
establishes the variant relationships. This common policy is presumed and used
as an example in this specification.</t>
      <t>With this extension, registering a domain creates a variant group and the first
domain registered in the group becomes the group's Primary Domain. The creation of the Primary
Domain <bcp14>MAY</bcp14> establish rules or guidelines regarding the domains that are eligible
to be a member of the group, e.g., an LGR, an IDN table, and a Primary Domain
taken together will define a variant group.</t>
      <t>Subsequent domains in the same group can only be registered by the same registrar, which
asserts that it is acting on behalf of the same registrant. Each domain in
a variant group may be the target of any EPP command, with the following
restrictions.</t>
      <ul spacing="normal">
        <li>
          <t>A &lt;transfer&gt; of any domain in any variant group always acts on the entire group.
This is required to ensure that the variant group is always registered by the same registrant
and managed via the same registrar. Registry policy <bcp14>MAY</bcp14> be impose additional restrictions.</t>
        </li>
        <li>
          <t>The &lt;delete&gt; of a Primary Domain in any variant group always acts on the entire group. This is
required to support the option where the Primary Domain establishes the rules or
guidelines for the creation of other domains in the group.</t>
        </li>
      </ul>
      <t>This extension is backwards compatible with registrars that do not support variant
groups. Specifically, this extension supports registries that do support variant
groups interacting with registrars that do not support variant groups. Registrars that do
not support variants that attempt to act on a member of a variant group inappropriately
will receive a compatible error response with which they can continue to function.
The compatible error response may not provide sufficient detail to fully understand
the rejection but will be sufficient to ensure continuation of normal operations.</t>
      <t>The remainder of this document describes the specific details.</t>
      <t><strong>TODO</strong>: login exchange of variant-aware</t>
      <t><strong>TODO</strong>: discussion of reference to EPP Extensibility and Extension Analysis
https://docs.google.com/document/d/1WR00oB43XZCDqD0zvRvRajuWAq_9wQ3c0RrFKlGC3So/edit?tab=t.0</t>
      <t><strong>TODO</strong>: map variant to related group</t>
    </section>
    <section anchor="requirements-language">
      <name>Requirements Language</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="terms">
      <name>Terms</name>
      <t>Allocated variant: A domain that has been created in the registry, and
which is tied to an existing primary domain.</t>
      <t>Allocatable variant: A domain that has not been allocated but is allocatable
(according to the LGR), and which is conceptually tied to an existing
primary domain.</t>
      <t>Activated variant: An allocated domain that is in the DNS.</t>
      <t>Blocked domain: A domain that cannot be allocated due to its disposition
value in relation to the primary domain name.</t>
      <t>Disposition Value: While a variant relationship is symmetric it has exactly
one of two disposition values which are not necessarily symmetric. A variant
can be "allocatable" (i.e., available for the same entity) or "blocked"
(i.e., not available for anybody).</t>
      <t>Exempted domain: A preexisting domain that exists as a stand-alone domain,
but would be part of a variant group if it were allocated now. Exempted domains
may exist with any registrant at any registrar. The exemption stops
as soon as at most 1 allocated domain remains within a variant group.</t>
      <t>IDN Table: The combined information about what characters (code points)
are available for domain registration as well as the variant relationships
between those code points. IDN tables can be defined via RFC3743 or RFC4290
or LGRs (RFC7940). The latter one <bcp14>SHOULD</bcp14> be used as it also allows the
formal definition of context rules, which is lacking in the former ones.</t>
      <t>Label Generation Rules (LGR): The preferred way of defining IDN tables.
Among others, they define the variant relationships as well as their
disposition values (blocked or allocatable). The formal definition of LGRs
can be fond in RFC7940.</t>
      <t>Primary domain: The chronologically first domain in a variant group.
While the variant relationship is symmetric, its disposition value is not.
It can either be blocked or allocatable. The primary domain name therefore
partitions the variant group into allocatable variants and blocked variants.
In case of variant TLDs, there can be a primary domain per TLD.</t>
      <t>Same Entity Principle: A requirement that all domains within a variant group
either belong to the same entity (i.e., the same registrant via the same
registrar) or are withheld for that entity. No other entity is allowed to
activate any domain within the same variant group.</t>
      <t>Variant domain: A domain in a variant group which is not a primary domain.</t>
      <t>Variant group: An implicit set of domains defined by the Label
Generation Rule (LGR) of the registry. The variant relationship is
symmetric and transitive. Hence, an arbitrary element of a variant set
defines the whole set. This set is not expressed explicitly in EPP,
because it can be impractically large. At the time of writing, a domain
is registered whose variant set would contain 10¹⁵ variants.</t>
      <t><strong>TODO</strong>: Do we need to differentiate between allocated and activated?</t>
      <t><strong>TODO</strong>: Does it make any difference, whether a variant has DNS name servers or not?</t>
    </section>
    <section anchor="epp-commands">
      <name>EPP Commands</name>
      <section anchor="epp-ltcheckgt-command">
        <name>EPP &lt;check&gt; command</name>
        <t><strong>NOTE</strong>: probably better not to have a command extension. For Registrars, it
would be difficult to determine the suitable primary domain. Therefore,
it is better to not ask them to send it, but rather return the appropriate
primary domain name in the response.</t>
        <t>This extension defines a new command called the Variant Check Command
that defines an additional Primary Domain name element for the EPP
&lt;check&gt; command.</t>
        <t>The command <bcp14>MAY</bcp14> contain an &lt;extension&gt; element, which <bcp14>MUST</bcp14> contain a
&lt;var:check&gt; element. The &lt;var:check&gt; element <bcp14>MUST</bcp14> contain one
&lt;var:primary&gt; element containing the intended primary domain.</t>
        <artwork><![CDATA[
C: <?xml version="1.0" encoding="utf-8" standalone="no"?>
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
C:   <command>
C:     <check>
C:       <domain:check
C:         xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
C:         <domain:name>examplev1.com</domain:name>
C:         <domain:name>examplev1.net</domain:name>
C:         <domain:name>examplev1.xyz</domain:name>
C:       </domain:check>
C:     </check>
C:     <extension>
C:       <var:check xmlns:var="urn:ietf:params:xml:ns:epp:variants-1.0">
C:         <var:primary>example.com</var:primary>
C:       </var:check>
C:     </extension>
C:     <clTRID>ABC-12345</clTRID>
C:   </command>
C: </epp>
]]></artwork>
        <t>When the server receives a &lt;check&gt; command from a
variant-agnostic client and any domain within the checked domain's
variant group is allocated (or at least one exempted
domain within the variant group exists) the server <bcp14>MUST NOT</bcp14> include
an &lt;extension&gt; element. Instead, its response <bcp14>MUST</bcp14>
be available = "false". The optional reason <bcp14>MAY</bcp14> be
"Unavailable (except as variant)" to tell the registrar it
might be available as a variant.</t>
        <t>When the server receives a &lt;check&gt; command from a variant-aware
client and the checked domain is part of a variant group with at least one
allocated variant (or exempted domain),
its response <bcp14>MUST</bcp14> contain an &lt;extension&gt; element, which <bcp14>MUST</bcp14>
contain a child &lt;var:chkData&gt; element. The &lt;fee:chkData&gt;
element <bcp14>MUST</bcp14> contain a &lt;var:cd&gt; element for each object referenced in
the client &lt;check&gt; command.</t>
        <t>Each &lt;var:cd&gt; (check data) element <bcp14>MUST</bcp14> contain the following child
elements:</t>
        <ul spacing="normal">
          <li>
            <t>A &lt;var:objID&gt; element, which <bcp14>MUST</bcp14> match an element referenced in
the client &lt;check&gt; command.</t>
          </li>
          <li>
            <t>An <bcp14>OPTIONAL</bcp14> &lt;var:primary&gt; element.</t>
          </li>
          <li>
            <t>A &lt;var:status&gt; element, which explains in more detail the availability
status of the queried domain.</t>
          </li>
        </ul>
        <t>Example &lt;check&gt; response:</t>
        <artwork><![CDATA[
S: <?xml version="1.0" encoding="utf-8" standalone="no"?>
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
S:   <response>
S:     <result code="1000">
S:       <msg>Command completed successfully</msg>
S:     </result>
S:     <resData>
S:       <domain:chkData
S:         xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
S:         <domain:cd>
S:           <domain:name avail="1">examplev1.com</domain:name>
S:         </domain:cd>
S:         <domain:cd>
S:           <domain:name avail="0">examplev1.net</domain:name>
S:         </domain:cd>
S:         <domain:cd>
S:           <domain:name avail="0">examplev1.tel</domain:name>
S:         </domain:cd>
S:         <domain:cd>
S:           <domain:name avail="0">examplev1.swiss</domain:name>
S:         </domain:cd>
S:       </domain:chkData>
S:     </resData>
S:     <extension>
S:       <var:chkData
S:           xmlns:var="urn:ietf:params:xml:ns:epp:variants-1.0">
S:         <var:cd avail="1">
S:           <var:objID>example.com</var:objID>
S:           <var:primary>example.com</var:primary>
S:           <var:status>AllocatableVariant</var:status>
S:         </var:cd>
S:         <var:cd avail="0">
S:           <var:objID>example.net</var:objID>
S:           <var:status>NotSameEntity</var:status>
S:         </var:cd>
S:         <var:cd avail="0">
S:           <var:objID>example.tel</var:objID>
S:           <var:status>Blocked</var:status>
S:         </var:cd>
S:         <var:cd avail="0">
S:           <var:objID>example.swiss</var:objID>
S:           <var:status>PendingTransfer</var:status>
S:         </var:cd>
S:       </var:chkData>
S:     </extension>
S:     <trID>
S:       <clTRID>ABC-12345</clTRID>
S:       <svTRID>54322-XYZ</svTRID>
S:     </trID>
S:   </response>
S: </epp>
]]></artwork>
        <t>The EPP &lt;check&gt; command may return five new results:</t>
        <ul spacing="normal">
          <li>
            <t>NotSameEntity: The domain cannot be provisioned because it is a variant of a
Primary Domain, and the Primary Domain belongs to a different client</t>
          </li>
          <li>
            <t>Blocked: The domain cannot be provisioned because its disposition value is blocked.</t>
          </li>
          <li>
            <t>Exempted: The domain cannot be provisioned because it is a variant of at
least one exempted domain.</t>
          </li>
          <li>
            <t>PendingTransfer: The domain cannot be provisioned because it is a variant in a group
that is currently being transferred to a different registrar.</t>
          </li>
          <li>
            <t>Custom: Additional custom value that may be used for server peculiarities.</t>
          </li>
        </ul>
      </section>
      <section anchor="epp-ltinfogt-command">
        <name>EPP &lt;info&gt; command</name>
        <t>For variant-agnostic clients
there is no change to the standard behaviour. The response contains the
actual data of the domain, independent of the fact whether it is a variant
or not, in addition to the following:</t>
        <ul spacing="normal">
          <li>
            <t>if the variant-agnostic registrar is inquiring about a non-allocated variant,
the response <bcp14>SHOULD</bcp14> be the same as the registrar inquiring about a reserved name.
If you don't have a policy, suggest a policy.</t>
          </li>
        </ul>
        <t><strong>TODO</strong>: XML example of response?</t>
        <t>For variant-aware clients, the EPP &lt;info&gt; command is not extended,
but its response is extended
if the &lt;info&gt; command concerns a variant domain, i.e., at least two
domains within a variant group have been activated. The response then always
<bcp14>MUST</bcp14> include all primary domain names across all activated variant TLDs. Optionally
the response may include the list of all activated variants (across
all variant TLDs).</t>
        <t>In case a Primary Domain name is queried in the &lt;info&gt; command,
the list of activated variants within the same TLD <bcp14>MUST</bcp14> be returned.</t>
        <t>In other words:
* If you ask about a primary domain name
  * you <bcp14>MUST</bcp14> return all primary labels in all variant TLDs
  * you <bcp14>MUST</bcp14> return all activated variants in that TLD
  * you <bcp14>MAY</bcp14> return all activated variants in all variant TLDs</t>
        <ul spacing="normal">
          <li>
            <t>if you ask about a variant domain
            </t>
            <ul spacing="normal">
              <li>
                <t>you <bcp14>MUST</bcp14> return the primary label for that variant</t>
              </li>
              <li>
                <t>you <bcp14>MUST</bcp14> return all primary labels in all variant TLDs</t>
              </li>
              <li>
                <t>you <bcp14>MAY</bcp14> return all activated variants in that TLD</t>
              </li>
              <li>
                <t>you <bcp14>MAY</bcp14> return all activated variants in all variant TLDs</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>The main part of the response <bcp14>MUST</bcp14> contain the actual data of the queried
domain name (contacts, hosts, status values, etc.)</t>
        <t>Example &lt;info&gt; response when querying a primary domain name:</t>
        <artwork><![CDATA[
S: <?xml version="1.0" encoding="UTF-8"?>
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
S:   <response>
S:     <result code="1000">
S:       <msg lang="en-US">Command completed successfully</msg>
S:     </result>
S:     <resData>
S:       <infData xmlns="urn:ietf:params:xml:ns:domain-1.0">
S:         <name>example.com</name>
S:         <roid>D123456789</roid>
S:         <status s="active"/>
S:         <registrant>abc123</registrant>
S:         <contact type="tech">ghi789</contact>
S:         <ns>
S:           <hostObj>ns1.example.net</hostObj>
S:           <hostObj>ns2.example.net</hostObj>
S:         </ns>
S:         <clID>registrar</clID>
S:         <crID>registrar</crID>
S:         <crDate>2010-09-08T07:06:05.0Z</crDate>
S:         <exDate>2012-09-08T23:59:59.0Z</exDate>
S:         <authInfo>
S:           <pw>secret</pw>
S:         </authInfo>
S:       </infData>
S:     </resData>
S:     <extension>
S:       <var:infData xmlns:var="urn:ietf:params:xml:ns:epp:variants-1.0">
S:         <var:primary>
S:           <var:name>example.com</var:name>
S:           <var:name>example.comv1</var:name>
S:           <var:name>example.comv2</var:name>
S:         </var:primary>
S:         <var:variant>
S:           <var:name>examplev1.com</var:name>
S:           <var:name>examplev2.com</var:name>
S:         </var:variant>
S:       </var:infData>
S:     </extension>
S:     <trID>
S:       <svTRID>ZYX-99958</svTRID>
S:     </trID>
S:   </response>
S: </epp>
]]></artwork>
        <t><strong>TODO</strong>: check whether EPP spec says anything about the alignment of check and info.</t>
      </section>
      <section anchor="epp-lttransfergt-command">
        <name>EPP &lt;transfer&gt; command</name>
        <t>If a variant-agnostic client initiates a transfer-in of a variant domain, i.e.,
at least two domains in a variant group have been activated, the transfer
request <bcp14>MUST</bcp14> be denied using 2305 "Object status prohibits operation".</t>
        <t><strong>TODO</strong>: xml example</t>
        <t>If a variant-aware client initiates a transfer-in of a variant domain, i.e.,
at least two domains in a variant group have been activated, the transfer request
<bcp14>MUST</bcp14> include an extension specifying the Primary Domain for the indicated variant
domain, including if the Primary Domain is the domain indicated in the
transfer-in. If the extension is not present the transfer request <bcp14>MUST</bcp14> be denied
using 2003 "Required parameter missing".</t>
        <t>The &lt;transfer&gt; response is extended <bcp14>MUST</bcp14> include the complete group of all activated
variants formed by combining all variant groups from all variant TLDs.</t>
        <t><strong>TODO</strong>: It must be ensured that the poll message to the losing registrar
also contains the full list of domains that will be transferred together with
the primary domain.</t>
        <t><strong>TODO</strong>: xml example</t>
      </section>
      <section anchor="epp-ltcreategt-command">
        <name>EPP &lt;create&gt; command</name>
        <t>The EPP &lt;create&gt; command's standard task is to provision a new
domain. If the domain to be created is part of a variant group, the command
<bcp14>MUST</bcp14> be rejected as follows.</t>
        <ul spacing="normal">
          <li>
            <t>If the client is variant-agnostic, the response <bcp14>SHOULD</bcp14> be the same as if
the domain to be created is reserved.</t>
          </li>
          <li>
            <t>If the client is variant-aware, the response <bcp14>MUST</bcp14> indicate that it is an
inappropriate use of the command.</t>
          </li>
        </ul>
        <t>The &lt;create&gt; <bcp14>MUST</bcp14> only be used to create the Primary Domain. The task of
converting an allocatable domain into an allocated
domain <bcp14>MUST</bcp14> be performed using the &lt;update&gt; command.</t>
        <t>If a client initiates the creation of a domain that does not
exist and is not a member of any variant group, then the following actions are
<bcp14>REQUIRED</bcp14>.</t>
        <ul spacing="normal">
          <li>
            <t>If the create is otherwise permitted and the domain could be a Primary Domain,
the server <bcp14>MUST</bcp14> ensure that all eligible members of the variant group are
prevented from creation or allocation until such time as the domain
is expressly indicated by the client to be a Primary Domain.</t>
          </li>
          <li>
            <t>The server <bcp14>MUST</bcp14> act on the create and respond to the client as if the domain is
a new domain.</t>
          </li>
        </ul>
        <t>__ TODO__: make clear that registering the first domain within any variant
group must not be rejected. The rejection only happens if at least one other
domain of that variant group already exists.</t>
        <t>The EPP &lt;create&gt; command may have five new errors, as described
in the &lt;check&gt; section above.</t>
        <t><strong>TODO</strong>: check alignment of the new error codes</t>
      </section>
      <section anchor="epp-ltupdategt-command">
        <name>EPP &lt;update&gt; command</name>
        <t>The EPP &lt;update&gt; command provides a transform operation that allows a
client to change the state of a variant domain object. It is extended
to cover three new tasks:</t>
        <ul spacing="normal">
          <li>
            <t>Activating an allocatable variant domain in an existing variant group</t>
          </li>
          <li>
            <t>Deactivating an activated variant domain name in an existing variant group</t>
          </li>
          <li>
            <t>Converting an Exempted Domain into a Primary Domain and optionally
converting other Exempted Domains that are eligible to be in the variant
group of the stated Primary Domain to be activated domains of the
variant group.</t>
          </li>
        </ul>
        <t>This extended &lt;update&gt; is not valid for use by a variant-agnostic
client. Any use by a variant-agnostic client <bcp14>MUST</bcp14> be rejected.</t>
        <t>This rest of this section specifies behavior when variant-aware
servers and clients are interacting.</t>
        <t>When a client wishes to provision (activate) a new domain in a variant
group, it uses the &lt;update&gt; command rather than the
&lt;create&gt; command. This informs the server that the client
understands that the task is to provision a variant domain rather than
a new domain, and asserts that the two domains belong to the
same registrant.</t>
        <t>The &lt;update&gt; command <bcp14>MUST</bcp14> specify the domain to be activated and
include an element specifying the Primary Domain that identifies the
correct variant group for the domain.</t>
        <t>Note that depending on registry policy, the variant domain may share
attributes with the Primary Domain, e.g., nameservers.
A registry policy <bcp14>MAY</bcp14> specify rules or guidelines for the
set of elements required or permitted for a variant domain according to the
Primary Domain.</t>
        <t>Note that the use of lt;rem&gt; in the lt;update&gt; command is not
allowed, because the object does not yet exist and therefore nothing
can be removed. To set data the lt;add&gt; or lt;chg&gt; tags need
to be used.</t>
        <t>The command <bcp14>MUST</bcp14> contain an &lt;extension&gt; element, which <bcp14>MUST</bcp14> contain a
&lt;var:update&gt; element. The &lt;var:update&gt; element <bcp14>MUST</bcp14> contain one
&lt;var:primary&gt; element containing the primary domain to which the
variant should be added.</t>
        <t>Example &lt;update&gt; command activating a new variant:</t>
        <artwork><![CDATA[
C: <?xml version="1.0" encoding="UTF-8" standalone="no"?>
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
C:   <command>
C:     <update>
C:       <domain:update xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
C:         <domain:name>examplev1.com</domain:name>
C:         <domain:add>
C:           <domain:ns>
C:             <domain:hostObj>ns1.example.com</domain:hostObj>
C:             <domain:hostObj>ns2.example.com</domain:hostObj>
C:           </domain:ns>
C:           <domain:contact type="tech">mak21</domain:contact>
C:         </domain:add>
C:         <domain:chg>
C:           <domain:registrant>sh8013</domain:registrant>
C:           <domain:authInfo>
C:             <domain:pw>2BARfoo</domain:pw>
C:           </domain:authInfo>
C:         </domain:chg>
C:       </domain:update>
C:     </update>
C:     <extension>
C:       <var:update xmlns:var="urn:ietf:params:xml:ns:epp:variants-1.0">
C:         <var:primary>example.com</var:primary>
C:       </var:update>
C:     </extension>
C:     <clTRID>ABC-12345</clTRID>
C:   </command>
C: </epp>
]]></artwork>
        <t>The response is not extended and returns the standard success result in case
the variant was successfullly activated.</t>
        <t>If a client wishes to deactivate a previously activated variant (except the
primary domain) it also uses the  &lt;update&gt; command.</t>
        <t>The EPP domain mapping from RFC3915 describes the elements that
have to be specified within an &lt;update&gt; command.  The requirement to
provide at least one &lt;domain:add&gt;, &lt;domain:rem&gt;, or &lt;domain:chg&gt;
element is updated by this extension such that at least one empty
&lt;domain:add&gt;, &lt;domain:rem&gt;, or &lt;domain:chg&gt; element <bcp14>MUST</bcp14> be present
if this extension is specified within an &lt;update&gt; command.  This
requirement is updated to disallow the possibility of modifying a
domain object as part of the deactivation.</t>
        <t>The command <bcp14>MUST</bcp14> contain an &lt;extension&gt; element, which <bcp14>MUST</bcp14> contain a
&lt;var:update&gt; element. The &lt;var:update&gt; element <bcp14>MUST</bcp14> contain one
&lt;var:deactivate&gt; element set to true. This confirms to the server
that the client is not trying to update the content of the variant domain,
but rather deactivate it.</t>
        <t>Example &lt;update&gt; command deactivating an existing variant:</t>
        <artwork><![CDATA[
C: <?xml version="1.0" encoding="UTF-8" standalone="no"?>
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
C:   <command>
C:     <update>
C:       <domain:update xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
C:         <domain:name>examplev1.com</domain:name>
C:         <domain:chg/>
C:       </domain:update>
C:     </update>
C:     <extension>
C:       <var:update xmlns:var="urn:ietf:params:xml:ns:epp:variants-1.0">
C:         <var:deactivate>true</var:deactivate>
C:       </var:update>
C:     </extension>
C:     <clTRID>ABC-12345</clTRID>
C:   </command>
C: </epp>
]]></artwork>
        <t>If a client wishes to convert an exempted domain into a member
of a variant group as an allocated variant,
it issues an &lt;update&gt;
command including and element with both the Primary Domain and separately the list
of exempted domains, which the client thereby asserts belong to the
same registrant. Note that the client <bcp14>MUST</bcp14> include all related exempted domains
in the list or the server <bcp14>MUST</bcp14> reject the command. The response <bcp14>MUST</bcp14> include
the complete list of exempted domains for the client.</t>
        <t><strong>TODO</strong>: xml example</t>
      </section>
      <section anchor="epp-ltdeletegt-command">
        <name>EPP &lt;delete&gt; command</name>
        <t>If a variant-agnostic client issues a &lt;delete&gt; command there is no change
from the standard functionality.</t>
        <t>If a variant-aware client issues a &lt;delete&gt; command, the command is extended
to REQUIRE the client to include an extension indicating the Primary Domain of
the domain being deleted, which the client thereby asserts that both domains belong
to the same registrant.  If a Primary Domain is being deleted then the same
domain name <bcp14>MUST</bcp14> be specified in the extension.</t>
        <t>If a Primary Domain is to be deleted, the &lt;delete&gt; command is extended
to include the deletion of all
variant domains in all variant groups in all Variant TLDs. The response <bcp14>MUST</bcp14> include a
list of all the allocated domains in all variant groups that were deleted.</t>
        <t><strong>TODO</strong>: xml example</t>
      </section>
      <section anchor="epp-renew-command">
        <name>EPP renew command</name>
        <t>The EPP renew command is not extended.</t>
        <t>The server <bcp14>MAY</bcp14> reject renewals while a variant group is being
transferred.</t>
      </section>
      <section anchor="epp-lttransfergt-query-command">
        <name>EPP &lt;transfer&gt; query command</name>
        <t>The EPP &lt;transfer&gt; query command is not extended.</t>
        <t>Note that because variant groups are transferred as a group, the
result of the a &lt;transfer&gt; query command is necessarily the same
for all domains in a group. Therefore, the result of &lt;transfer&gt;
query command for any domain in a variant group applies to all domains
in the group.</t>
      </section>
    </section>
    <section anchor="result-codes">
      <name>Result codes</name>
      <t>The following additional result codes are defined:</t>
      <t>23x1: Change impossible because of a transfer in progress.</t>
      <t>23x2: Change impossible because something is not a variant.</t>
      <t>This error code is used when a change presupposes that two domains
belong to the same variant group, but the EPP server's implementation
disagrees.</t>
      <t>23x3: Change impossible due to invalid primary domain</t>
      <t>This error code is used when the primary domain specified in the
command is not registered, or is not registered via this registrar.</t>
      <t>23x4: Change impossible due to unspecified primary domain</t>
      <t>This error code is used when a command needs to specify a primary
domain, and does not.</t>
      <t>23x5: Specified domain is exempted</t>
      <t>This error code is used when a domain specifies a primary domain, and
the change is impossible because the specified domain is exempted
instead.</t>
      <t>23x6: Specified domain is allocatable, but not by you.</t>
      <t>This result code is used when a domain is a member of a variant set,
and the command did not refer to the primary domain.</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The design of this extension is almost completely based on work done
by and decisions made by the <xref target="EPDP"/> committee, which was reviewed by
a small technical design team chaired by James Galvin. Members of this
team included Dennis Tan, Rick Wilhelm, Edmon Chung, and Jennifer Chung.
This text (in RFC format) was initially written by Arnt
Gulbrandsen based on a conference presentation by James Galvin.</t>
      <t>YOUR NAME HERE have reviewed it and provided helpful
comments or contributed in other ways.</t>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <t>If two domains are different according to the DNS rules and identical
in the eyes of the intended audience, then the audience may be
confused. Confusion can always have security-related effects.</t>
      <t>This extension expresses the relationships between variants clearly,
making it a little more difficult for a would-be impersonator to
register a variant of another registrant's existing domain.</t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5730">
          <front>
            <title>Extensible Provisioning Protocol (EPP)</title>
            <author fullname="S. Hollenbeck" initials="S." surname="Hollenbeck"/>
            <date month="August" year="2009"/>
            <abstract>
              <t>This document describes an application-layer client-server protocol for the provisioning and management of objects stored in a shared central repository. Specified in XML, the protocol defines generic object management operations and an extensible framework that maps protocol operations to objects. This document includes a protocol specification, an object mapping template, and an XML media type registration. This document obsoletes RFC 4930. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="69"/>
          <seriesInfo name="RFC" value="5730"/>
          <seriesInfo name="DOI" value="10.17487/RFC5730"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7940">
          <front>
            <title>Representing Label Generation Rulesets Using XML</title>
            <author fullname="K. Davies" initials="K." surname="Davies"/>
            <author fullname="A. Freytag" initials="A." surname="Freytag"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document describes a method of representing rules for validating identifier labels and alternate representations of those labels using Extensible Markup Language (XML). These policies, known as "Label Generation Rulesets" (LGRs), are used for the implementation of Internationalized Domain Names (IDNs), for example. The rulesets are used to implement and share that aspect of policy defining which labels and Unicode code points are permitted for registrations, which alternative code points are considered variants, and what actions may be performed on labels containing those variants.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7940"/>
          <seriesInfo name="DOI" value="10.17487/RFC7940"/>
        </reference>
        <reference anchor="EPDP" target="https://www.icann.org/en/public-comment/proceeding/phase-2-initial-report-of-the-epdp-on-internationalized-domain-names-11-04-2024">
          <front>
            <title>Phase 2 Initial Report of the EPDP on Internationalized Domain Names</title>
            <author initials="" surname="ICANN" fullname="ICANN">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 723?>

<section anchor="open-issues">
      <name>Open issues</name>
      <t>Open issue: Assign numbers to the error codes, properly.</t>
      <t>Open issue: Not clear that there are any security considerations here
— the relationships between the domains may have some, but those exist
outside EPP, EPP merely describes them. In Italian, caffe and caffè
are variants of the same thing, it's not clear that linking them in a
protocol affects security in any way.</t>
      <t>Open issue: Check how to insert a DS record in a variant domain.</t>
      <t>Open issue: Can a unicode upgrade cause domains to become
exempted?  Yes, I think, and the terminology covers it, but as of
now, it's difficult for the EPP client to understand the situation.
Extending the &lt;info&gt; command would help here, perhaps.</t>
      <t>Open issue: Creating a primary domain now consists of a two-step
process, &lt;create&gt; and then &lt;update&gt;. The first step turns
all variants into blocked domains, the second makes them
allocatable. It's not clear to me why the two-step process is
desirable, compared to a one-step process where a &lt;create&gt;
command creates a primary domain if the variant group contains other
domains than that one. That needs a couple of sentences of
explanation, or else a change.</t>
      <t>Open issue: &lt;Delete&gt; now cascades and deletes many domains.
Should it instead turn any variant domains into exempted domains?</t>
      <t>Open issue: Should the &lt;info&gt; of the primary domain also return
the list of allocated variants? Probably not — at the moment, this
extension has the client send a set that the server checks, and the
server may need to generate a set for checking, but the server does
not need to generate a list for returning.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
