3.1.4.14 RollupDownstreamServers

A DSS calls the RollupDownstreamServers method to send information on itself (and on DSSs that synchronize updates from it) to the USS.

 <wsdl:operation name="RollupDownstreamServers">
   <wsdl:input message="tns:RollupDownstreamServersSoapIn" />
   <wsdl:output message="tns:RollupDownstreamServersSoapOut" />
 </wsdl:operation>

The SOAP operation is defined as follows.

 <soap:operation soapAction="http://www.microsoft.com/SoftwareDistribut
 ion/RollupDownstreamServers" style="document" />

Request validation:

The USS validates inputs as given in the following table. If any of the inputs are not valid, the USS MUST return a SOAP fault message to the DSS.

Input

Validation conditions

downstreamServers

MUST be present, and the total number of DownstreamServerRollupClientSummary structures in the request (summed across all DownstreamServerRollupInfo structures in the request) MUST NOT exceed the RollupDownstreamServersMaxBatchSize value returned by the USS in the preceding GetRollupConfiguration call.

Data processing:

The USS MUST process this message as follows:

  1. The USS MAY use the clientTime value passed by the DSS to determine the difference between the USS system clock and DSS system clock, and adjust the other input time stamps to compensate for the difference.<50>

  2. For each DownstreamServerRollupInfo structure in the request:

    1. Get the ParentServerId value and search the DSS Table for an entry with a ServerID matching this value. If no such entry is found, return a SOAP fault message and stop processing this request.

    2. Get the ServerId value and search the DSS Table for an entry with a ServerID matching this value.

      1. If no entry is found, create a new entry, initializing all values in the entry using values from the DownstreamServerRollupInfo structure.

        If the DownstreamServerRollupInfo structure contains a ParentServerId value of "00000000-0000-0000-0000-000000000000", the ParentServerId value MUST instead use the ServerID value from the Server Configuration Table.

      2. If an existing entry is found, and the LastRollupTime value from this entry in the table is less than or equal to the LastRollupTime value from the DownstreamServerRollupInfo structure, then do the following:

        1. Update the entry using the values from the DownstreamServerRollupInfo structure. If the DownstreamServerRollupInfo structure contains a ParentServerId value of "00000000-0000-0000-0000-000000000000", the ParentServerID value MUST instead use the ServerID value from the Server Configuration Table.

        2. For each DownstreamServerRollupClientSummary structure in the ClientSummaries array, search the Client Computer Activity Summaries Table for an entry with UpdateID, ServerID, and OS version values matching those from the DownstreamServerRollupInfo and DownstreamServerRollupClientSummary structures.

          1. If an existing entry is found, increment the InstallSuccessCount and InstallFailureCount values in the table entry by the corresponding value from the DownstreamServerRollupClientSummary structure.

          2. Else add a new entry to the table using the values from the DownstreamServerRollupInfo and DownstreamServerRollupClientSummary structure.

      3. Else ignore this DownstreamServerRollupInfo structure.

Response:

If no errors occur during processing, the USS MUST return the success response to the DSS.

If an error occurs during processing, the USS MUST return a SOAP fault indicating that an error occurred. This protocol does not define a mechanism for returning information on the cause of the failure.