<div class="content" name="FrsRpcStartPromotionParent" uuid="64a4bfe1-feda-44ee-9eb4-d3364f8d9702"><p>The FrsRpcStartPromotionParent method requests the server
that is the <a href="2e457199-2dc1-46c3-8aa6-b2d8e016f95c#gt_4daf1e81-3ffe-4656-8074-a9914b14a60c" data-linktype="relative-path">Upstream Partner</a>
to start a <a href="2e457199-2dc1-46c3-8aa6-b2d8e016f95c#gt_efd19057-36a8-4a9a-a4bc-4a70d6c048b9" data-linktype="relative-path">volatile
connection</a> for the purpose of seeding the <a href="2e457199-2dc1-46c3-8aa6-b2d8e016f95c#gt_d3283b03-3828-49a7-ae15-9b65f86482e1" data-linktype="relative-path">system volume (SYSVOL)</a> folder
on the container. </p><dl>
<dd>
<div><pre> unsigned long FrsRpcStartPromotionParent(
   [in] handle_t Handle,
   [in, string, unique] PWCHAR ParentAccount,
   [in, string, unique] PWCHAR ParentPassword,
   [in, string, unique] PWCHAR ReplicaSetName,
   [in, string, unique] PWCHAR ReplicaSetType,
   [in, string, unique] PWCHAR CxtionName,
   [in, string, unique] PWCHAR PartnerName,
   [in, string, unique] PWCHAR PartnerPrincName,
   [in] unsigned long PartnerAuthLevel,
   [in, range(sizeof(GUID),sizeof(GUID))] 
     unsigned long GuidSize,
   [in, size_is(GuidSize), unique] 
     unsigned char* CxtionGuid,
   [in, size_is(GuidSize), unique] 
     unsigned char* PartnerGuid,
   [in, out, size_is(GuidSize), unique] 
     unsigned char* ParentGuid
 );
</pre></div>
</dd></dl><p><b>Handle: </b>Binding handle obtained when the <a href="2e457199-2dc1-46c3-8aa6-b2d8e016f95c#gt_7b0ee975-d1b4-4a39-865d-d13e6c96aa76" data-linktype="relative-path">partner</a> authenticates with
the <a href="2e457199-2dc1-46c3-8aa6-b2d8e016f95c#gt_20f21413-875c-4ebf-9913-a3282fbb779f" data-linktype="relative-path">file replication service</a>.</p><p><b>ParentAccount: </b>Valid account on the <a href="2e457199-2dc1-46c3-8aa6-b2d8e016f95c#gt_76a05049-3531-4abd-aec8-30e19954b4bd" data-linktype="relative-path">DC</a> that functions as the
parent. MUST be NULL (indicating to use the current connecting client&#39;s
credential).</p><p><b>ParentPassword: </b>Password for an account on the
DC. MUST be NULL.</p><p><b>ReplicaSetName: </b>RDN name of the <a href="2e457199-2dc1-46c3-8aa6-b2d8e016f95c#gt_6cef9d9c-c366-490a-8e4e-a350688731ca" data-linktype="relative-path">replica set</a> that the caller
requested.</p><p><b>ReplicaSetType: </b>String that specifies the type
of the replica set that the caller requested. The string MUST be treated in a
case-insensitive manner, and there MUST NOT be white space in the string. The
value MUST be one of the following.</p><dl>
<dd>
<table><thead>
  <tr>
   <th>
   <p>Value</p>
   </th>
   <th>
   <p>Meaning</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>&#34;Enterprise&#34;</td>
  <td>Enterprise Replica Set.</td>
 </tr><tr>
  <td>&#34;Domain&#34;</td>
  <td>Domain Replica Set.</td>
 </tr></tbody></table>
</dd></dl><p><b>CxtionName: </b>Fully qualified domain name of the
machine receiving this call.</p><p><b>PartnerName: </b>Fully qualified domain name of
the caller.</p><p><b>PartnerPrincName: </b>Name of the caller to use
for Kerberos authentication in the format of [Domain Name]\[Host Name]$.</p><p><b>PartnerAuthLevel: </b>Authentication type and
level. MUST be one of the following values. <a id="Appendix_A_Target_76"></a><a aria-label="Product behavior note 76" href="d18cc589-677e-4133-97e5-113641792c5e#Appendix_A_76" data-linktype="relative-path">&lt;76&gt;</a></p><dl>
<dd>
<table><thead>
  <tr>
   <th>
   <p>Value</p>
   </th>
   <th>
   <p>Meaning</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>0x00000000</td>
  <td>Encrypted Kerberos</td>
 </tr><tr>
  <td>0x00000001</td>
  <td>No authentication</td>
 </tr></tbody></table>
</dd></dl><p><b>GuidSize: </b>Size of the array allocated to hold
the <a href="2e457199-2dc1-46c3-8aa6-b2d8e016f95c#gt_f49694cc-c350-462d-ab8e-816f0103c6c1" data-linktype="relative-path">globally unique
identifier (GUID)</a>. MUST be 0x00000010.</p><p><b>CxtionGuid: </b>Temporary value for the
connection. The GUID is generated randomly and is not persisted in <a href="2e457199-2dc1-46c3-8aa6-b2d8e016f95c#gt_e467d927-17bf-49c9-98d1-96ddf61ddd90" data-linktype="relative-path">Active Directory</a>.</p><p><b>PartnerGuid: </b>GUID that identifies the replica
set on the replication partner.</p><p><b>ParentGuid: </b>GUID value that identifies the
parent for the <a href="2e457199-2dc1-46c3-8aa6-b2d8e016f95c#gt_dcdb3292-07a4-425a-bf78-19a59bad1182" data-linktype="relative-path">inbound
connection</a>.</p><p><b>Return Values: </b>The method MUST return 0 on
success; otherwise, it MUST return a nonzero error code, as defined by the
vendor.</p><p>To create a \SYSVOL volume (required for the server to
operate as a DC), the FrsRpcStartPromotionParent method requests a volatile
connection on the server for the purpose of seeding a \SYSVOL folder. This is
necessary because of the following: During DC promotion, the newly promoted DC
creates a set of <a href="2e457199-2dc1-46c3-8aa6-b2d8e016f95c#gt_90d448cf-8d8e-44e7-a9dc-675c4c99400f" data-linktype="relative-path">Active
Directory objects</a>, which includes the connection objects. When the newly
promoted DC is trying to replicate the contents from another DC in the <a href="2e457199-2dc1-46c3-8aa6-b2d8e016f95c#gt_b0276eb2-4e65-4cf1-a718-e0920a614aca" data-linktype="relative-path">domain</a> (the process is
called <a href="2e457199-2dc1-46c3-8aa6-b2d8e016f95c#gt_46a2ebd1-502d-46d9-a64a-677077aaf78c" data-linktype="relative-path">initial sync</a>),
the other DC might not know the newly created connection, either because the DS
replication service has not replicated the connection out to the other DC or
because the other DC has not polled the Directory Service yet. The newly
created DC creates a volatile connection for only the initial sync and calls
this <a href="2e457199-2dc1-46c3-8aa6-b2d8e016f95c#gt_8a7f6700-8311-45bc-af10-82e10accd331" data-linktype="relative-path">RPC</a> function to
inform the other DC about this volatile connection. In this way, the other DC
does not reject the initial sync request. <a id="Appendix_A_Target_77"></a><a aria-label="Product behavior note 77" href="d18cc589-677e-4133-97e5-113641792c5e#Appendix_A_77" data-linktype="relative-path">&lt;77&gt;</a> Once the
initial sync is completed, NTFRS starts using the connection generated by
Knowledge Consistency Checker (KCC) for normal synchronization.</p><p>On receiving this message, the server MUST validate the
following:</p><ul><li><p><span><span> 
</span></span>Verify that the current local member is really a DC by querying
the local member&#39;s computer object in the domain, as specified in <a href="../ms-adsc/9abb5e97-123d-4da9-9557-b353ab79b830" data-linktype="relative-path">[MS-ADSC]</a>
section <a href="../ms-adsc/142185a8-2e23-4628-b002-cf31d57bb37a" data-linktype="relative-path">2.21</a>.</p>
</li><li><p><span><span> 
</span></span> Verify that the client MUST be really a DC by querying the
client&#39;s computer object in the domain, as specified in [MS-ADSC] section 2.21.</p>
</li><li><p><span><span> 
</span></span> Verify GuidSize MUST be 0x10.</p>
</li><li><p><span><span> 
</span></span> Verify ReplicaSetName is not NULL and MUST exist on the server.</p>
</li><li><p><span><span> 
</span></span> Verify ReplicaSetType MUST be either Enterprise or Domain.</p>
</li><li><p><span><span> 
</span></span> Verify CxtionName MUST NOT be NULL.</p>
</li><li><p><span><span> 
</span></span> Verify PartnerName MUST NOT be NULL.</p>
</li><li><p><span><span> 
</span></span> Verify PartnerPrincName MUST NOT be NULL.</p>
</li><li><p><span><span> 
</span></span> Verify CxtionGuid MUST NOT be NULL.</p>
</li><li><p><span><span> 
</span></span> Verify PartnerGuid MUST NOT be NULL.</p>
</li><li><p><span><span> 
</span></span> Verify ParentGuid MUST NOT be NULL.</p>
</li><li><p><span><span> 
</span></span> Verify PartnerAuthLevel MUST be either 0 (Encrypted Kerberos) or
1 (no authentication).</p>
</li></ul><p>If the parameter validation fails, the server MUST fail the
operation with ERROR_INVALID_PARAMETER, as specified in <a href="../ms-erref/1bc92ddf-b79e-413c-bbaa-99a5281a6c90" data-linktype="relative-path">[MS-ERREF]</a>
section <a href="../ms-erref/18d8fbe8-a967-4f1c-ae50-99ca8e491d2d" data-linktype="relative-path">2.2</a>;
otherwise, the server MUST do the following:</p><ul><li><p><span><span> 
</span></span>Find the local replica as identified by ReplicaSetName by reading
the Active Directory objects.</p>
</li><li><p><span><span> 
</span></span> Set the local replica&#39;s GUID as ParentGuid.</p>
</li><li><p><span><span> 
</span></span>Create a new connection in the local replica with the following
parameters:</p>
<ul><li><p><span><span>  </span></span>Connection
direction MUST be set to Outbound.</p>
</li><li><p><span><span>  </span></span>Mark
the connection to be volatile.</p>
</li><li><p><span><span>  </span></span> Connection
name MUST be set to CxtionGuid.</p>
</li><li><p><span><span>  </span></span> Connection
GUID MUST be set to CxtionGuid.</p>
</li><li><p><span><span>  </span></span> Connection
partner name MUST be set to PartnerName.</p>
</li><li><p><span><span>  </span></span> Connection
partner GUID MUST be set to PartnerGuid.</p>
</li><li><p><span><span>  </span></span> Connection
state MUST be set to unjoined state. </p>
</li><li><p><span><span>  </span></span>The
first time promotion for SYSVOL MUST wait for connection establishment request
(section <a href="5b88f556-9c51-46b0-8470-f7ba02990be2" data-linktype="relative-path">3.3.4.4.4</a>).</p>
</li></ul></li></ul></div>