3.3.4.2 Uploading Messaging Objects Using FastTransfer

Clients not only can download copies of specified folders, messages or attachments using FastTransfer ROPs and FastTransfer streams, clients can also upload copies of these messaging objects as well. The following steps MUST be taken by a client to upload copies of messaging objects to the server using FastTransfer ROPs and FastTransfer streams:

  1. Obtain a handle to a messaging object, for which appending or replacing properties and/or subobjects is requested. To obtain a handle to a new messaging object, use the OutputHandleIndex field from the RopCreateMessage ROP ([MS-OXCROPS] section 2.2.6.2) response buffer. For more details about obtaining a handle to an existing messaging object, see [MS-OXCMSG] section 3.1.4.1.

  2. Send the RopFastTransferDestinationConfigure ROP (section 2.2.3.1.2.1) to create a FastTransfer upload context on the server and define the parameters of the operation.

  3. Optionally, send the RopTellVersion ROP (section 2.2.3.1.1.6) if performing a server-to-client-to-server upload, as specified in section 3.3.4.2.1. Additional details about sending a RopTellVersion ROP request are specified in section 3.3.5.7.2.

  4. Iteratively send the RopFastTransferDestinationPutBuffer ROP (section 2.2.3.1.2.2) on the FastTransfer context to upload the FastTransfer stream with the serialized messaging objects.

  5. Send the RopRelease ROP ([MS-OXCROPS] section 2.2.15.3) to release the messaging object and the FastTransfer context obtained in steps 1 and 2.

In step 4, if a client simply resends the stream that it is getting through the FastTransfer download, it can consider using an optimized server-to-client-to-server upload process, as specified in section 3.3.4.2.1.