<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="yes"?>
<?rfc comments="yes" ?>
<?rfc inline="yes" ?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info" ipr="trust200902" docName="draft-garg-change-00" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="false" version="3" consensus="true">
  <front>
    <title abbrev="EPP Change Mapping">
     Extensible Provisioning Protocol (EPP) Change Mapping</title>
    <author fullname="Poonam Garg" initials="P." surname="Garg">
      <organization>VeriSign, Inc.</organization>
      <address>
        <postal>
          <street>12061 Bluemont Way</street>
          <city>Reston</city>
          <region>VA</region>
          <code>20190</code>
          <country>United States of America</country>
        </postal>
        <email>pogarg@verisign.com</email>
        <uri>http://www.verisign.com</uri>
      </address>
    </author>
    <author fullname="James Gould" initials="J." surname="Gould">
      <organization>VeriSign, Inc.</organization>
      <address>
        <postal>
          <street>12061 Bluemont Way</street>
          <city>Reston</city>
          <region>VA</region>
          <code>20190</code>
          <country>United States of America</country>
        </postal>
        <email>jgould@verisign.com</email>
        <uri>http://www.verisign.com</uri>
      </address>
    </author>
    <author fullname="John Colosi" initials="J." surname="Colosi">
      <organization>VeriSign, Inc.</organization>
      <address>
        <postal>
          <street>12061 Bluemont Way</street>
          <city>Reston</city>
          <region>VA</region>
          <code>20190</code>
          <country>United States of America</country>
        </postal>
        <email>jcolosi@verisign.com</email>
        <uri>http://www.verisign.com</uri>
      </address>
    </author>
    <area>General</area>
    <keyword>EPP</keyword>
    <keyword>Extensible Provisioning Protocol</keyword>
    <keyword>XML</keyword>
    <keyword>Change</keyword>
    <keyword>Extension</keyword>
    <abstract>
      <t>This document describes an Extensible Provisioning Protocol (EPP) mapping for provisioning and management of change request objects 
      in a shared central repository, where a change request is one unit of work that is processed by submitting to a workflow to execute the 
      linked EPP transform commands in order. The change request is a container with meta-data to ensure that the contained commands are 
      processed as a group. 
      </t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro" numbered="true" toc="default">
      <name>Introduction</name>
      <t>A change request object enables the creation, deletion, clearing, withdrawal, and submission of an ordered 
      set of Extensible Provisioning Protocol (EPP) transform commands that are linked to a change request 
      object with a change request identifier.  The linked EPP transform commands will be executed only 
      when the change request object is submitted.</t>
      <t>This document describes a change object mapping for version 1.0 of the Extensible Provisioning Protocol (EPP) <xref target="RFC5730"></xref>. 
      This mapping is specified using the XML 1.0 as described in 
      <xref target="W3C.REC-xml-20040204"></xref> and XML Schema notation as described in 
      <xref target="W3C.REC-xmlschema-1-20041028"></xref> and 
      <xref target="W3C.REC-xmlschema-2-20041028"></xref>.</t>
      <section numbered="true" toc="default">
      <name>Conventions Used in This Document</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
        "OPTIONAL" in this document are to be interpreted as described in
        <xref target="BCP14"/> when, and only when, they appear in all capitals, as
        shown here.</t>
        <t>In examples, "C:" represents lines sent by a protocol client and "S:"
        represents lines returned by a protocol server.  Indentation and white
        space in examples is provided only to illustrate element relationships
        and is not a REQUIRED feature of this specification.</t>
        <t>XML is case sensitive.  Unless stated otherwise, XML specifications
        and examples provided in this document MUST be interpreted in the
        character case presented to develop a conforming implementation.</t>
        <t>The XML namespace prefix "change" is used for the namespace
        "http://www.verisign-grs.com/epp/change-1.0", but implementations MUST NOT
        depend on it; instead, they should employ a proper namespace-aware
        XML parser and serializer to interpret and output the XML documents.</t>
      </section>
    </section>
    
    
    <section title="Object Attributes" anchor="attrs" numbered="true" toc="default">
      <t>An EPP change request object has attributes and associated values that may 
      be viewed and modified by the sponsoring client or the server.  This section 
      describes each attribute type in detail. The formal
      syntax for the attribute values described here can be found in the
      "Formal Syntax" section of this document and in the appropriate
      normative references.</t>
      <section title="Change Request Identifier" anchor="change-identifier">
        <t>All EPP Change Requests are identified by a server-unique identifier that is generated and provided by the client.
        Change Request Identifiers are character strings with a specific minimum length, 
        a specified maximum length, and a specified format. Change Request Identifiers use 
        the "clIDType" client identifier syntax described in <xref target="RFC5730"></xref>. 
        Its corresponding element is &lt;change:requestID&gt;.</t>
      </section>
      <section title="Change Status" anchor="change-status">
        <t>The change request object contains a status value that can be made to support 
        various state machine implementations.  It is up to server policy to define a set of statuses. 
        Each implementation will specify different behaviors for the submit operation of the &lt;update&gt; 
        command as it is related directly to status modification.</t>
        <t>The status values will be defined out-of-band of the protocol.</t>
        <t>Some of the examples of status values are:</t>
        <ul spacing="normal">
		    <li><t>"initial": Change Request has been created</t></li>
		    <li><t>"submitted": Change Request has been submitted</t></li>
		    <li><t>"complete": Change Request has been completed</t></li>
	      </ul>
      </section>
      <section title="Change Priority" anchor="change-priority">
        <t>The change request object contains a priority value that can support 
        order in which the change requests are implemented. It is up to server policy 
        to define a set of priorities.</t>
        <t>The priority values will be defined out-of-band of the protocol.</t>
        <t>Some of the examples of priority values are:</t>
        <ul spacing="normal">
		    <li><t>"normal": Change Request need to be implemented within normal SLA</t></li>
		    <li><t>"urgent": Change Request need to be implemented within urgent SLA</t></li>
		    <li><t>"emergency": Change Request need to be implemented within emergency SLA</t></li>
	      </ul>
      </section>
      <section title="Change Request Operations" anchor="change-operation">
        <t>The change request object contains an operation value for the &lt;update&gt; command to 
        define the operation being performed. Operation values are case sensitive.</t> 
        <t>Supported values are:</t>
        <ul spacing="normal">
		    <li><t>"upAttrs": Update the change request attributes</t></li>
		    <li><t>"clear": Remove all change action objects associated with this change request</t></li>
		    <li><t>"submit": Submit the change request to promote to next status</t></li>
		    <li><t>"withdraw": Withdraw the change request after submission</t></li>
	      </ul>
      </section>
      <section title="Change Request Poll Message">
        <t>The EPP &lt;poll&gt; command and response is defined in section 2.9.2.3 of <xref target="RFC5730"></xref>. 
            For servers that support a change request object, the Change Info Response, as defined in Section 3.1.2, 
            is inserted into the poll queue.</t>
            <t>Example &lt;poll&gt; command:</t>
         <figure>
            <artwork name="" type="" align="left" alt=""><![CDATA[
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
C:<command xmlns="urn:ietf:params:xml:ns:epp-1.0">
C:  <poll op="req"/>
C:  <clTRID>51364-CLI</clTRID>
C:</command>
C:</epp>]]>
            </artwork>
          </figure>            
            <t>Example &lt;poll&gt; response:</t>
         <figure>
		  <artwork name="" type="" align="left" alt=""><![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="1301">
S:      <msg>Command completed successfully; ack to dequeue</msg>
S:    </result>
S:    <msgQ count="1" id="12345">
S:        <qDate>2025-07-23T20:28:12.816Z</qDate>
S:        <msg>This Change Request has been completed</msg>
S:    </msgQ>
S:    <resData>
S:      <change:infData xmlns:change="http://www.verisign-grs.com/epp/change-1.0">
S:        <change:requestID>tk421</change:requestID>
S:        <change:priority>normal</change:priority>
S:        <change:category>EXAMPLE</change:category>
S:        <change:desc>A change request within .EXAMPLE</change:desc>
S:        <change:status>completed</change:status>
S:        <change:crDate>2025-07-11</change:crDate>
S:        <change:upDate>2025-07-23</change:upDate>
S:        <change:crID>userA</change:crID>
S:        <change:upID>userA</change:upID>
S:      </change:infData>
S:    </resData>
S:    <trID>
S:      <clTRID>51364-CLI</clTRID>
S:      <svTRID>SRV-43659</svTRID>
S:    </trID>
S:  </response>
S:</epp>]]>
            </artwork>
         </figure>                     
      </section>
    </section>
    
  
    <section anchor="commands" numbered="true" toc="default">
      <name>EPP Command Mapping</name>
      <t>A detailed description of the EPP syntax and semantics can be found
      in the EPP core protocol specification <xref target="RFC5730" format="default"/>.  The command
      mappings described here are specifically for use in provisioning and
      managing change information via EPP.</t>
      <section anchor="queries" numbered="true" toc="default">
        <name>EPP Query Commands</name>
        <t>This document provides two commands to retrieve change information:</t>
        <t>&lt;check&gt; to determine if a change request object can be provisioned
   within a repository and &lt;info&gt; to retrieve detailed information
   associated with a change request object.  This document does not
   define a mapping for the EPP &lt;transfer&gt; command to retrieve
   change-object transfer status information.</t>
        <section anchor="check" numbered="true" toc="default">
          <name>EPP &lt;check&gt; Command</name>
          <t>The EPP &lt;check&gt; command is used to determine if an object can be
   		  provisioned within a repository.  It provides a hint that allows a
          client to anticipate the success or failure of provisioning an object
          using the &lt;create&gt; command, as object-provisioning requirements are
   		  ultimately a matter of server policy.</t>
   		  <t>In addition to the standard EPP command elements, the &lt;check&gt; command
   		  MUST contain an &lt;change:check&gt; element.  This element or its ancestor
   		  element MUST identify the change namespace.  
   		  The &lt;change:check&gt; element contains the following child elements:</t>
   	      <ul spacing="normal">
		   <li>
		    <t>One or more &lt;change:requestID&gt; elements that contain the server-unique 
			   identifier of the change request objects to be queried.</t>
		   </li>
	      </ul>
		  <t>Example &lt;check&gt; command:</t>
          <figure>
            <artwork name="" type="" align="left" alt=""><![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:      <change:check
C:        xmlns:change="http://www.verisign-grs.com/epp/change-1.0">
C:        <change:requestID>tk421</change:requestID>
C:        <change:requestID>thx1138</change:requestID>
C:      </change:check>
C:    </check>
C:    <clTRID>51364-CLI</clTRID>
C:  </command>
C:</epp>]]>
            </artwork>
          </figure>
          <t>When a &lt;check&gt; command has been processed successfully, the EPP &lt;resData&gt; 
          element MUST contain a child &lt;change:chkData&gt; element that identifies the 
          change namespace. The &lt;change:chkData&gt; element contains the following child elements:</t>
          <t>one or more &lt;change:cd&gt; elements that contain the following child elements:</t>
          <ul spacing="normal">
            <li><t>The element MUST contain an "exists" attribute whose value indicates the object existence 
            at the moment the &lt;check&gt; command was completed.  A value "1" or "true" means that the change 
            request identifier exists and cannot be provisioned. A value of "0" or "false" means that the 
            change request identifier does not exist and can be provisioned.</t></li>
          </ul>
          <t>Example &lt;check&gt; response:</t>
          <figure>
		  <artwork name="" type="" align="left" alt=""><![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"><msg>Command completed successfully</msg></result>
S:  <resData>
S:   <change:chkData
S:    xmlns:change="http://www.verisign-grs.com/epp/change-1.0">
S:    <change:cd exists="0">tk421</change:cd>
S:    <change:cd exists="1">thx1138</change:cd>
S:   </change:chkData>
S:  </resData>
S:  <trID>
S:   <clTRID>51364-CLI</clTRID>
S:   <svTRID>SRV-43659</svTRID>
S:  </trID>
S: </response>
S:</epp>]]>
            </artwork>
         </figure>
         <t>An EPP error response MUST be returned if a &lt;check&gt; command cannot be processed for any reason.</t>
        </section>
        
        <section anchor="info" numbered="true" toc="default">
          <name>EPP &lt;info&gt; Command</name>
          <t>The EPP &lt;info&gt; command is used to retrieve change request information based on the specified Change Request Identifier.
          In addition to the standard EPP command elements, the &lt;info&gt; command MUST contain a &lt;change:info&gt; 
          element that identifies the change namespace. The &lt;change:info&gt; element contains the following child elements:</t>
          <ul spacing="normal">
		   <li>
		    <t>A &lt;change:requestID&gt; element that contain the server-unique 
			   identifier of the change request objects to be queried.</t>
		   </li>
	      </ul>
          <t>Example &lt;info&gt; command:</t>
          <figure>
		  <artwork name="" type="" align="left" alt=""><![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:  <info>
C:   <change:info
C:    xmlns:change="http://www.verisign-grs.com/epp/change-1.0">
C:    <change:requestID>tk421</change:requestID>
C:   </change:info>
C:  </info>
C:  <clTRID>51364-CLI</clTRID>
C: </command>
C:</epp>]]>
         </artwork>
         </figure>
         <t>When an &lt;info&gt; command has been processed successfully, the EPP &lt;resData&gt; 
          element MUST contain a child &lt;change:infData&gt; element that identifies the 
          change namespace. The &lt;change:infData&gt; element contains the following child elements:</t>
          <ul spacing="normal">
            <li><t>An &lt;change:requestID&gt; element that contains the change request identifier, defined in Section 2.1.</t></li>
          </ul>
          <ul spacing="normal">
            <li><t>An &lt;change:priority&gt; element that contains the defined priority of the change request, described in Section 2.3.</t></li>
          </ul>
          <ul spacing="normal">
            <li><t>One or more  &lt;change:category&gt; elements that contain the Top Level Domain (TLD) for the change request.
            The TLD may contain a single dot character (0x2e) to represent a change to the root zone.</t></li>
          </ul>
          <ul spacing="normal">
            <li><t>An &lt;change:desc&gt; element that contains a freeform description of the purpose or reason for the change request.</t></li>
          </ul>
          <ul spacing="normal">
            <li><t>An &lt;change:status&gt; element that contains the server defined status of the change request, defined in Section 2.2.</t></li>
          </ul>
          <ul spacing="normal">
            <li><t>An &lt;change:crDate&gt; element that contains the date of change request creation.</t></li>
          </ul>
          <ul spacing="normal">
            <li><t>An &lt;change:upDate&gt; element that contains the date of the most recent change request modification.</t>
            <t>The element MUST NOT be present if the change request has never been modified.</t></li>
          </ul>
          <ul spacing="normal">
            <li><t>An &lt;change:crID&gt; element that contains the identifier of the client that created the change request object.</t></li>
          </ul>
          <ul spacing="normal">
            <li><t>An &lt;change:upID&gt; element that contains the identifier of the client that last updated the change request object.</t>
            <t>The element MUST NOT be present if the change request has never been modified.</t></li>
          </ul>
          <ul spacing="normal">
            <li><t>Zero or more &lt;change:action&gt; elements with the following change action elements:</t>
                <ul><li><t>An OPTIONAL &lt;change:requestID&gt; element that contains the change request identifier, defined in Section 2.1.</t></li></ul>
                <ul><li><t>An OPTIONAL &lt;change:cltrid&gt; element that contains client transaction identifier.</t></li></ul>
                <ul><li><t>An &lt;change:svtrid&gt; elements that contains the server transaction identifier that is assigned by and unique to the server.</t></li></ul>
                <ul><li><t>An OPTIONAL &lt;change:crDate&gt; element that contains the date of the change action.</t></li></ul>
            </li>           
          </ul>
          <t>Example &lt;info&gt; response:</t>
          <figure>
		  <artwork name="" type="" align="left" alt=""><![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"><msg>Command completed successfully</msg></result>
S:  <resData>
S:   <change:infData
S:    xmlns:change="http://www.verisign-grs.com/epp/change-1.0">
S:    <change:requestID>tk421</change:requestID> 
S:    <change:priority>normal</change:priority>
S:    <change:category>EXAMPLE</change:category>
S:    <change:category>.</change:category>
S:    <change:desc>A change request within .EXAMPLE</change:desc>
S:    <change:status>initial</change:status>
S:    <change:crDate>2026-09-21</change:crDate>
S:    <change:upDate>2026-10-30</change:upDate>
S:    <change:crID>userA</change:crID>
S:    <change:upID>userA</change:upID>
S:    <change:action>
S:     <change:requestID>tk421</change:requestID>
S:     <change:cltrid>51125-CLI</change:cltrid>
S:     <change:svtrid>SRV-10122</change:svtrid>
S:    </change:action>
S:    <change:action>
S:     <change:requestID>tk421</change:requestID>
S:     <change:svtrid>SRV-10321</change:svtrid>
S:    </change:action>
S:    <change:action>
S:     <change:requestID>tk421</change:requestID>
S:     <change:cltrid>51345-CLI</change:cltrid>
S:     <change:svtrid>SRV-10122</change:svtrid>
S:    </change:action>
S:   </change:infData>
S:  </resData>
S:  <trID>
S:   <clTRID>51364-CLI</clTRID>
S:   <svTRID>SRV-43659</svTRID>
S:  </trID>
S: </response>
S:</epp>]]>
            </artwork>
         </figure>
         <t>An EPP error response MUST be returned if a &lt;info&gt; command cannot be processed for any reason.</t>
        </section>
        <section anchor="transferQ" numbered="true" toc="default">
          <name>EPP &lt;transfer&gt; Query Command</name>
          <t>The transfer semantics do not apply to change request objects.  
          No EPP &lt;transfer&gt; query command is defined in this document.</t>
        </section>
      </section>
      
      <section anchor="transforms" numbered="true" toc="default">
        <name>EPP Transform Commands</name>
        <t>This document provides three commands to transform change request object information:</t>
   <t>&lt;create&gt; to create an instance of a change request object, &lt;delete&gt; to delete an 
   instance of a change request object, and &lt;update&gt; to change information associated with a change request object.  
   This document does not define a mapping for the EPP &lt;transfer&gt; and &lt;renew&gt; command.</t>
   
        <section anchor="create" numbered="true" toc="default">
          <name>EPP &lt;create&gt; Command</name>
          <t>The EPP &lt;create&gt; command is used to construct a new change request object.</t>
          <t>In addition to the standard EPP command elements, the &lt;create&gt; command MUST contain 
          a &lt;change:create&gt; element that identifies the change namespace. The &lt;change:create&gt; 
          element contains the following child elements:</t>
          <ul spacing="normal">
		   <li><t>An &lt;change:requestID&gt; element that contains the change request identifier, described in Section 2.1.</t></li>
		   <li><t>An OPTIONAL &lt;change:priority&gt; element that contains the defined priority of the change request, described in Section 2.3. </t></li>
		   <li><t>One or more &lt;change:category&gt; elements that contain the Top Level Domain (TLD) for the change request.  
		   The TLD may contain a single dot character (0x2e) to represent a change to the root zone. </t></li>		   
		   <li><t>An &lt;change:desc&gt; element that contains a freeform description of the purpose or reason for the change request.</t></li>
	      </ul>
          <t>Example &lt;create&gt; command:</t>
          <figure>
		  <artwork name="" type="" align="left" alt=""><![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:  <create>
C:   <change:create
C:    xmlns:change="http://www.verisign-grs.com/epp/change-1.0">
C:    <change:requestID>tk421</change:requestID>
C:    <change:priority>emergency</change:priority>
C:    <change:category>EXAMPLE</change:category>
C:    <change:desc>A new request within .EXAMPLE</change:desc>
C:   </change:create>
C:  </create>
C:  <clTRID>51364-CLI</clTRID>
C: </command>
C:</epp>]]>
         </artwork>
         </figure>
	      <t>When a &lt;create&gt; command has been processed successfully, the server MUST respond with an EPP response with no  
	      &lt;resData&gt; element.</t>
          <t>Example &lt;create&gt; response:</t>
          <figure>
		  <artwork name="" type="" align="left" alt=""><![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"><msg>Command completed successfully</msg></result>
S:  <trID>
S:   <clTRID>51364-CLI</clTRID>
S:   <svTRID>SRV-43659</svTRID>
S:  </trID>
S: </response>
S:</epp>]]>
            </artwork>
         </figure>
         <t>An EPP error response MUST be returned if a &lt;create&gt; command cannot be processed for any reason.</t>
        </section>
        
        <section anchor="update" numbered="true" toc="default">
          <name>EPP &lt;update&gt; Command</name>
           <t>The EPP &lt;update&gt; command is used to modify an existing change request object.</t>
		   <t>In addition to the standard EPP command elements, the &lt;update&gt; command MUST contain a 
		   &lt;change:update&gt; element that identifies the change namespace. The &lt;change:update&gt; 
		   element contains the following child elements:</t>
		   <ul spacing="normal">
		   <li><t>An &lt;change:requestID&gt; element that contains the change request identifier, described in Section 2.1.</t></li>
		   <li><t>A choice of one of the following change request operation elements, described in Section 2.4:</t>
  		     <ul spacing="normal">
		      <li>
		       <t>An &lt;change:upAttrs&gt; element to update the change request attributes that contains the following child elements, 
		       where at least one child element MUST be set:</t>
			   <ul><li><t>An OPTIONAL &lt;change:priority&gt; element that contains the defined priority of the change request, described in Section 2.3.</t></li></ul>
		       <ul><li><t>Zero or more &lt;change:category&gt; elements that contain the Top Level Domain (TLD) for the change request. 
		       The TLD may contain a single dot character (0x2e) to represent a change to the root zone.</t></li></ul>
			   <ul><li><t>An OPTIONAL &lt;change:desc&gt; that contains a freeform description of the purpose or reason for the change request.</t></li></ul>
		      </li>
		      <li>
		   	    <t>An &lt;change:clear&gt; element to clear the change request actions. After execution of the clear operation, 
		   	    the change request will no longer be associated with any change request actions.</t>		   
		      </li>
		      <li>
		   	    <t>An &lt;change:submit&gt; element to submit the change request. Once the change request has been submitted, it can only be withdrawn.</t>		   
		      </li>
		      <li>
		   	    <t>An &lt;change:withdraw&gt; element to withdraw the change request. Once the submitted change request has been withdrawn, it can be deleted.</t>		   
		      </li>
		     </ul> 
			</li>
		    </ul>  
		  <t>If the &lt;change:upAttrs&gt; element is present, then the change request record will be modified as specified by the 
		  &lt;change:priority&gt;, &lt;change:category&gt;, and &lt;change:desc&gt; elements.</t>
          <t>NOTE: The &lt;change:upAttrs&gt; element MUST not be empty.  The schema will not allow a &lt;change:upAttrs&gt; element 
          without at least one of the &lt;change:priority&gt;, &lt;change:category&gt; or &lt;change:desc&gt; elements, described in Section 2.3.</t>
		  <t>If instead the &lt;change:clear&gt; element is present, then all change action objects associated with this change request 
		  will be removed.  After execution the specified change request record will no longer be associated with any change action records.</t>
		  <t>If instead the &lt;change:submit&gt; element is present, then the specified change request record is promoted to a new status.  
		  Statuses supported will be implementation specific.</t> 	
          <t>Example &lt;update&gt; command with &lt;upAttrs&gt;:</t>
          <figure>
		  <artwork name="" type="" align="left" alt=""><![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:   <change:update
C:    xmlns:change="http://www.verisign-grs.com/epp/change-1.0">
C:    <change:requestID>tk421</change:requestID>
C:    <change:upAttrs> 
C:     <change:category>EXAMPLE</change:category>
C:     <change:category>.</change:category>
C:     <change:desc>A change request within .EXAMPLE</change:desc>
C:    </change:upAttrs>
C:   </change:update>
C:  </update>
C:  <clTRID>51364-CLI</clTRID>
C: </command>
C:</epp>]]>
         </artwork>
         </figure>  
         
        <t>Example &lt;update&gt; command with &lt;clear&gt;:</t>
          <figure>
		  <artwork name="" type="" align="left" alt=""><![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:   <change:update
C:    xmlns:change="http://www.verisign-grs.com/epp/change-1.0">
C:    <change:requestID>tk421</change:requestID>
C:    <change:clear/>
C:   </change:update>
C:  </update>
C:  <clTRID>51364-CLI</clTRID>
C: </command>
C:</epp>]]>
         </artwork>
         </figure> 
                  
        <t>Example &lt;update&gt; command with &lt;submit&gt;:</t>
          <figure>
		  <artwork name="" type="" align="left" alt=""><![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:   <change:update
C:    xmlns:change="http://www.verisign-grs.com/epp/change-1.0">
C:    <change:requestID>tk421</change:requestID>
C:    <change:submit/>
C:   </change:update>
C:  </update>
C:  <clTRID>51364-CLI</clTRID>
C: </command>
C:</epp>]]>
         </artwork>
         </figure> 
         
         <t>When an &lt;update&gt; command has been processed successfully,
         the EPP &lt;resData&gt; element MUST contain a child &lt;change:updData&gt; element that identifies 
         the change namespace. The &lt;change:updData&gt; element contains the following child elements:</t>
         <ul>
          <li>
           <t>An OPTIONAL &lt;change:receipt&gt; element that contains a submission receipt from change request submit operation.  
           No &lt;change:receipt&gt; element will be returned for non-submit operations. </t>
          </li>
         </ul>
         <t>NOTE: The &lt;change:receipt&gt; element will appear only in a response to a &lt;update&gt; command with the &lt;change:submit&lt; element.  
         No receipt is required when updating attributes or clearing a Change Request.</t>
         <t>Example &lt;update&gt; response from an &lt;update&gt; command with a &lt;change:submit&gt; element:</t>
          <figure>
		  <artwork name="" type="" align="left" alt=""><![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"><msg>Command completed successfully</msg></result>
S:  <resData>
S:   <change:updData
S:    xmlns:change="http://www.verisign-grs.com/epp/change-1.0">
S:    <change:receipt>
S:	[+] Begin Change Request Summary: DO NOT EDIT BELOW
S:	 
S:	Change Request Id:          tk421
S:	Request Priority:           NORMAL
S:	Top-level domain:           EXAMPLE
S:	Purpose/Description:        A change request within .EXAMPLE
S:	 
S:	Operations:
S:	 
S:    Domain Create
S:        Name:         EXAMPLE
S:	 
S:	[-] End Change Request Summary: DO NOT EDIT ABOVE
S:    </change:receipt>
S:   </change:updData>
S:  </resData>
S:  <trID>
S:   <clTRID>51364-CLI</clTRID>
S:   <svTRID>SRV-43659</svTRID>
S:  </trID>
S: </response>
S:</epp>]]>
            </artwork>
         </figure>
         
                  <t>Example &lt;update&gt; response from an &lt;update&gt; command with a &lt;change:clear&gt; or &lt;change:upAttrs&gt; element:</t>
          <figure>
		  <artwork name="" type="" align="left" alt=""><![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"><msg>Command completed successfully</msg></result>
S:  <resData>
S:   <change:updData
S:    xmlns:change="http://www.verisign-grs.com/epp/change-1.0">
S:   </change:updData>
S:  </resData>
S:  <trID>
S:   <clTRID>51364-CLI</clTRID>
S:   <svTRID>SRV-43659</svTRID>
S:  </trID>
S: </response>
S:</epp>]]>
            </artwork>
         </figure>
         <t>An EPP error response MUST be returned if a &lt;update&gt; command cannot be processed for any reason.</t>      
        </section>
        
        <section anchor="delete" numbered="true" toc="default">
          <name>EPP &lt;delete&gt; Command</name>
          <t>The EPP &lt;delete&gt; command is used to delete a change request object before it is submitted.</t>
          <t>In addition to the standard EPP command elements, the &lt;delete&gt; command MUST contain a &lt;change:delete&gt; 
          element that identifies the change namespace. The &lt;change:delete&gt; element contains the following child elements:</t>
          <ul spacing="normal">
		   <li>
		    <t>An &lt;change:requestID&gt; element that contains the change request identifier, described in Section 2.1, for the change 
		    request object to be deleted.</t>
		   </li>
	      </ul>
          <t>Example &lt;delete&gt; command:</t>
          <figure>
		  <artwork name="" type="" align="left" alt=""><![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:  <delete>
C:   <change:delete
C:    xmlns:change="http://www.verisign-grs.com/epp/change-1.0">
C:    <change:requestID>tk421</change:requestID>
C:   </change:delete>
C:  </delete>
C:  <clTRID>51364-CLI</clTRID>
C: </command>
C:</epp>
]]>
         </artwork>
         </figure>
 	     <t>When a &lt;delete&gt; command has been processed successfully, the server MUST respond with an EPP response with no  
	      &lt;resData&gt; element.</t>
          <t>Example &lt;delete&gt; response:</t>
          <figure>
		  <artwork name="" type="" align="left" alt=""><![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"><msg>Command completed successfully</msg></result>
S:  <trID>
S:   <clTRID>51364-CLI</clTRID>
S:   <svTRID>SRV-43659</svTRID>
S:  </trID>
S: </response>
S:</epp>
]]>
            </artwork>
         </figure>
         <t>An EPP error response MUST be returned if a &lt;delete&gt; command cannot be processed for any reason.</t>  
        </section>     
        <section anchor="renew" numbered="true" toc="default">
          <name>EPP &lt;renew&gt; Command</name>
          <t>Renewal semantics do not apply to change request objects, so there is
          no mapping defined for the EPP &lt;renew&gt; command.</t>
        </section>
        <section anchor="transferT" numbered="true" toc="default">
          <name>EPP &lt;transfer&gt; Command</name>
          <t>Transfer semantics do not apply to change request objects, so there is
          no mapping defined for the EPP &lt;transfer&gt; command.</t>
        </section>

      </section>
    </section>
    <section anchor="syntax" numbered="true" toc="default">
      <name>Formal Syntax</name>
      <t>An EPP object mapping is specified in XML Schema notation.  The
      formal syntax presented here is a complete schema representation of
      the object mapping suitable for automated validation of EPP XML
      instances.  The BEGIN and END tags are not part of the schema; they
      are used to note the beginning and ending of the schema for URI
      registration purposes.
      </t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
BEGIN
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.verisign-grs.com/epp/change-1.0"
  xmlns:change="http://www.verisign-grs.com/epp/change-1.0"
  xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
  xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
  xmlns="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified">

  <import namespace="urn:ietf:params:xml:ns:eppcom-1.0" 
    schemaLocation="eppcom-1.0.xsd"/>
  <import namespace="urn:ietf:params:xml:ns:epp-1.0" 
    schemaLocation="epp-1.0.xsd"/>

  <annotation>
    <documentation>
      Extensible Provisioning Protocol v1.0
      Change provisioning schema
    </documentation>
  </annotation>
  
  <!-- Check command -->
  <element name="check" type="change:checkType"/>
  <complexType name="checkType">
    <sequence>
      <element name="requestID" type="epp:trIDStringType" 
       maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <!-- Check response -->
  <element name="chkData" type="change:chkDataType"/>
  <complexType name="chkDataType">
    <sequence>
      <element name="cd" type="change:cdType" 
       maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="cdType">
    <simpleContent>
      <extension base="epp:trIDStringType">
        <attribute name="exists" type="boolean" use="required"/>
      </extension>
    </simpleContent>
  </complexType>

  <!-- Info command -->
  <element name="info" type="change:infoType"/>
  <complexType name="infoType">
    <sequence>
      <element name="requestID" type="epp:trIDStringType"/>
    </sequence>
  </complexType>

  <!-- Info response -->
  <element name="infData" type="change:infDataType"/>
  <complexType name="infDataType">
    <sequence>
      <element name="requestID" type="epp:trIDStringType"/>
      <element name="priority" type="change:priorityType"/>
      <element name="category" type="change:categoryType" 
       maxOccurs="unbounded"/>
      <element name="desc" type="change:descType"/>
      <element name="status" type="change:statusType"/>
      <element name="crDate" type="date"/>
      <element name="upDate" type="date"/>
      <element name="crID" type="epp:trIDStringType"/>
      <element name="upID" type="epp:trIDStringType"/>
      <element name="action" type="change:actionType" 
      minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <simpleType name="statusType">
    <restriction base="token">
      <minLength value="4"/>
      <maxLength value="32"/>
    </restriction>
  </simpleType>

  <complexType name="actionType">
    <sequence>
      <element name="requestID" type="epp:trIDStringType" 
      minOccurs="0"/>
      <element name="cltrid" type="epp:trIDStringType" 
      minOccurs="0"/>
      <element name="svtrid" type="epp:trIDStringType"/>
      <element name="def" type="string" 
      minOccurs="0"/>
      <element name="crDate" type="date" 
      minOccurs="0"/>
      <element name="upDate" type="date" 
      minOccurs="0"/>
    </sequence>
  </complexType>

  <!-- Create command -->
  <element name="create" type="change:createType"/>
  <complexType name="createType">
    <sequence>
      <element name="requestID" type="epp:trIDStringType"/>
      <element name="priority" type="change:priorityType" 
      minOccurs="0"/>
      <element name="category" type="change:categoryType" 
       maxOccurs="unbounded"/>
      <element name="desc" type="change:descType"/>
    </sequence>
  </complexType>

  <!-- Update command -->
  <element name="update" type="change:updateType"/>
  <complexType name="updateType">
    <sequence>
      <element name="requestID" type="epp:trIDStringType"/>
        <choice>
          <element name="upAttrs" type="change:upAttrsType"/>
          <element name="clear" type="change:emptyType"/>
          <element name="submit" type="change:emptyType"/>
          <element name="withdraw" type="change:emptyType"/>
        </choice>
      </sequence>
  </complexType>

  <complexType name="emptyType"/>

  <complexType name="upAttrsType">
    <choice>
      <sequence>
        <element name="priority" type="change:priorityType"/>
        <element name="category" type="change:categoryType" 
      minOccurs="0" maxOccurs="unbounded"/>
        <element name="desc" type="change:descType" 
      minOccurs="0"/>
      </sequence>
      <sequence>
        <element name="category" type="change:categoryType" 
       maxOccurs="unbounded"/>
        <element name="desc" type="change:descType" 
      minOccurs="0"/>
      </sequence>
      <sequence>
        <element name="desc" type="change:descType"/>
      </sequence>
    </choice>
  </complexType>

  <!-- Update response -->
  <element name="updData" type="change:updDataType"/>
  <complexType name="updDataType">
    <sequence>
      <element name="receipt" type="change:receiptType" 
      minOccurs="0"/>
    </sequence>
  </complexType>

  <!-- No schema level length restrictions on the receipt -->
  <simpleType name="receiptType">
    <restriction base="string">
      <whiteSpace value="preserve"/>
    </restriction>
  </simpleType>

  <!-- Delete command -->
  <element name="delete" type="change:deleteType"/>
  <complexType name="deleteType">
    <sequence>
      <element name="requestID" type="epp:trIDStringType"/>
    </sequence>
  </complexType>

  <!-- Common elements -->
  <simpleType name="categoryType"> 
    <union memberTypes="change:labelType change:rootType"/> 
  </simpleType>

  <simpleType name="rootType">
    <restriction base="token">
      <enumeration value="."/>
    </restriction>
  </simpleType>

  <simpleType name="labelType">
    <restriction base="token">
      <!-- [2-63] characters -->
      <pattern value="[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]"/>
    </restriction>
  </simpleType>

  <simpleType name="descType">
    <restriction base="token">
      <minLength value="1"/>
      <maxLength value="256"/>
    </restriction>
  </simpleType>

  <simpleType name="priorityType">
    <restriction base="token">
      <minLength value="4"/>
      <maxLength value="20"/>
    </restriction>
  </simpleType>

</schema>
END]]></artwork>
    </section>
    <section anchor="iana" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="IANA-XML-Namespace" numbered="true" toc="default">
        <name>XML Namespace</name>
        <t>This document uses URNs to describe XML namespaces and XML schemas
	conforming to a registry mechanism described in <xref target="RFC3688"
	format="default"/>. The following URI assignment has been made by
	IANA:</t>
        <t>Registration request for the Change Mapping namespace:</t>
        <dl newline="false" spacing="compact">
          <dt>URI:</dt>
	  <dd>http://www.verisign-grs.com/epp/change-1.0</dd>
          <dt>Registrant Contact:</dt>
	  <dd>VeriSign Inc., &lt;epp-registry@verisign.com&gt;</dd>
          <dt>XML:</dt>
	  <dd>None. Namespace URIs do not represent an XML specification.</dd>
        </dl>
        <t>Registration request for the Change Mapping XML Schema:</t>
        <dl newline="false" spacing="compact">
          <dt>URI:</dt>
	  <dd>http://www.verisign-grs.com/epp/change-1.0</dd>
          <dt>Registrant Contact:</dt>
	  <dd>VeriSign Inc., &lt;epp-registry@verisign.com&gt;</dd>
          <dt>XML:</dt>
	  <dd>See the "Formal Syntax" section of this document.</dd>
        </dl>
      </section>
      <section anchor="EPP-Extension-Registry" numbered="true" toc="default">
        <name>EPP Extension Registry</name>
        <t>The EPP extension described in this document has been registered
	by IANA in the "Extensions for the Extensible Provisioning
	Protocol (EPP)" registry described in <xref
	target="RFC7451" format="default"/>.  The details of the registration
	are as follows:</t>
	<dl newline="false" spacing="compact">
        <dt>Name of Extension:</dt>
	<dd>"Extensible Provisioning Protocol (EPP) Change Mapping"</dd>
        <dt>Document Status:</dt>
	<dd>Informational</dd>
        <dt>Reference:</dt>
	<dd>(insert reference to RFC version of this document)</dd>
        <dt>Registrant Name and Email Address:</dt>
	<dd>VeriSign Inc., &lt;epp-registry@verisign.com&gt;</dd>
        <dt>TLDs:</dt>
	<dd>Any</dd>
        <dt>IPR Disclosure:</dt>
	<dd>None</dd>
        <dt>Status:</dt>
	<dd>Active</dd>
        <dt>Notes:</dt>
	<dd>None</dd>
	</dl>
      </section>
    </section>
    <section anchor="security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>The mapping extensions described in this document do not provide any
      security services beyond those described by EPP <xref target="RFC5730" format="default"/>
      and protocol layers used by EPP.  The security considerations described in
      these other specifications apply to this specification as well.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
                <reference anchor="W3C.REC-xml-20040204" target="http://www.w3.org/TR/2004/REC-xml-20040204">
            <front>
                <title>"Extensible Markup Language (XML) 1.0 (Third Edition)", World Wide Web Consortium FirstEdition REC-xml-20040204</title>
                <author initials="T" surname="Bray">
                    <organization></organization>
                </author>
                <author initials="J" surname="Paoli">
                    <organization></organization>
                </author>
                <author initials="C" surname="Sperberg-McQueen">
                    <organization></organization>
                </author>
                <author initials="E" surname="Maler">
                    <organization></organization>
                </author>
                <author initials="F" surname="Yergeau">
                    <organization></organization>
                </author>
                <date month="February" year="2004" />
            </front>
        </reference>
        <reference anchor="W3C.REC-xmlschema-1-20041028" target="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028">
            <front>
                <title>"XML Schema Part 1: Structures Second Edition", World Wide Web Consortium Recommendation REC-xmlschema-1-20041028</title>
                <author initials="H" surname="Thompson">
                    <organization></organization>
                </author>
                <author initials="D" surname="Beech">
                    <organization></organization>
                </author>
                <author initials="M" surname="Maloney">
                    <organization></organization>
                </author>
                <author initials="N" surname="Mendelsohn">
                    <organization></organization>
                </author>
                <date month="October" year="2004" />
            </front>
        </reference>
        <reference anchor="W3C.REC-xmlschema-2-20041028" target="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028">
            <front>
                <title>"XML Schema Part 2: Datatypes Second Edition", World Wide Web Consortium Recommendation REC-xmlschema-2-20041028</title>
                <author initials="P" surname="Biron">
                    <organization></organization>
                </author>
                <author initials="A" surname="Malhotra">
                    <organization></organization>
                </author>
                <date month="October" year="2004" />
            </front>
        </reference>
        <referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/bcp14">
          <xi:include href="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
          <xi:include href="http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        </referencegroup>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3688.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5730.xml"/>
       </references>
      <references>
        <name>Informative References</name>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7451.xml"/>
      </references>
    </references>
  </back>
</rfc>
