4.4 Flagging a Draft Message Object for the Sender and Recipient

Randy Byrne is planning to send a contract to a customer on March 7, 2008. He wants his co-worker, Marina Dukhon, to review the contract before he sends it out. He sends a message to Marina with a sender flag that has a due date of 2008/03/07 with a request string of "Forward", and a recipient flag to Marina with a reminder on March 6, 2008, at 4:00 P.M. local time and a request string of "Review". The following is a description of what a client might do to accomplish Randy's intentions and the responses a server might return.

As before, the client first retrieves a handle to the Message object by sending the RopOpenMessage ROP request ([MS-OXCROPS] section 2.2.6.1).

To set the properties for the sender flag and the recipient flag, the client sends a RopSetProperties ROP request ([MS-OXCROPS] section 2.2.8.6) with the values that are specified in the following table.

Property

Property ID

Property type

Value

PidTagFlagStatus (section 2.2.1.1)

0x1090

0x0003 (PtypInteger32 ([MS-OXCDATA] section 2.11.1))

0x00000002

PidTagReplyRequested (section 2.2.1.4)

0x0C17

0x000B (PtypBoolean ([MS-OXCDATA] section 2.11.1))

0x01 (TRUE)

PidTagResponseRequested (section 2.2.1.5)

0x0063

0x000B

0x01 (TRUE)

PidTagReplyTime (section 2.2.3.1)

0x0030

0x0040 (PtypTime ([MS-OXCDATA] section 2.11.1))

2008/03/07 00:00:00.000

PidTagToDoItemFlags (section 2.2.1.6)

0x0E2B

0x0003

0x00000008

PidTagSwappedToDoData (section 2.2.1.7)

0x0E2D

0x0102 (PtypBinary ([MS-OXCDATA] section 2.11.1))

See note 2 following this table

PidTagSwappedToDoStore (section 2.2.1.8)

0xE2C

0x0102

See note 1 following this table

PidLidFlagRequest (section 2.2.1.9)

0x802A

0x001F (PtypString ([MS-OXCDATA] section 2.11.1))

"Review"

PidLidFlagString (section 2.2.1.10)

0x83C0

0x0003

0x0000000A

PidLidToDoTitle (section 2.2.1.12)

0x8018

0x001F

"Review"

PidLidTaskStatus (section 2.2.2.1)

0x8145

0x0003

0x00000000

PidLidPercentComplete (section 2.2.2.3)

0x8146

0x0005 (PtypFloating64 ([MS-OXCDATA] section 2.11.1))

0.0

PidLidTaskComplete (section 2.2.2.2)

0x8148

0x000B

0x00 (FALSE)

PidLidReminderSet ([MS-OXORMDR] section 2.2.1.1)

0x8004

0x000B

0x01 (TRUE)

PidLidReminderDelta ([MS-OXORMDR] section 2.2.1.3)

0x81FF

0x0003

0x00000000

PidLidReminderTime ([MS-OXORMDR] section 2.2.1.4)

0x8005

0x0040

2008/03/07 00:00:00.000

PidLidReminderSignalTime ([MS-OXORMDR] section 2.2.1.2)

0x8006

0x0040

2008/03/07 00:00:00.000

Note 1: The PidTagSwappedToDoStore property is set to the value of the PidTagStoreEntryId property ([MS-OXCMSG] section 2.2.1.44) of the Message object.

Note 2: The PidTagSwappedToDoData property contains the following binary data.

 000: 01 00 00 00 79 00 00 00 01 00 00 00 46 00 6F 00
 010: 72 00 77 00 61 00 72 00 64 00 00 00 00 00 00 00
 020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 0A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 0B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 0C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 0D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 0E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 0F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 1A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 1B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 1C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 1D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 1E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 1F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 200: 00 00 00 00 00 00 00 00 00 00 00 00 E0 80 E9 5A
 210: 60 C0 C3 0C 00 00 00 00 00 00 00 00

This binary data corresponds to the following values in the fields of the PidTagSwappedToDoData property.

Field

Value

ulVersion

0x00000001

dwFlags

0x00000079

dwToDoItem

0x00000001

wszFlagTo

"Forward"

rtmStartDate

0x5AE980E0 (None)

rtmDueDate

0x0CC3C060 (2008/03/07 00:00:00.000)

rtmReminder

0x00000000

fReminderSet

0x00000000 (FALSE)

Finally, to send the message to the intended recipients, the client sends a RopSubmitMessage ROP request ([MS-OXCROPS] section 2.2.7.1) followed by a RopRelease ROP request ([MS-OXCROPS] section 2.2.15.3) to release the object.

When the above message is sent, the client performs post-transmit processing on the message, as described in both section 3.1.4.3 and the remainder of this section.

The client retrieves a handle to the Message object by sending a RopOpenMessage request and gets the relevant flagging properties by sending a RopGetPropertiesSpecific ROP request ([MS-OXCROPS] section 2.2.8.3). The values of the properties returned would be identical to the values set above, except for the following property, which is changed by the server during message delivery.

Property

Property ID

Property type

Value

PidTagMessageDeliveryTime ([MS-OXOMSG] section 2.2.3.9)

0x0E06

0x0040

2008/03/03 21:03:00.000

To perform the swap, the client sends a RopSetProperties request with the values that are specified in the following table.

Property

Property ID

Property type

Value

PidTagFlagStatus

0x1090

0x0003

0x00000002

PidTagFollowupIcon (section 2.2.1.2)

0x1095

0x0003

0x00000006

PidTagReplyRequested

0x0C17

0x000B

0x01 (TRUE)

PidTagResponseRequested

0x0063

0x000B

0x01 (TRUE)

PidTagToDoItemFlags

0x0E2B

0x0003

0x00000001

PidTagSwappedToDoData

0x0E2D

0x0102

See note 3 following this table.

PidLidFlagRequest

0x802A

0x001F

"Forward"

PidLidFlagString

0x83C0

0x0003

0x00000000

PidLidValidFlagStringProof (section 2.2.1.11)

0x83CA

0x0040

2008/03/03 21:03:00.000

PidLidToDoTitle

0x8018

0x001F

"Contoso Project"

PidLidToDoOrdinalDate (section 2.2.1.13)

0x830D

0x0040

2008/03/03 21:03:29.438

PidLidToDoSubOrdinal (section 2.2.1.14)

0x830E

0x001F

"5555555"

PidLidTaskDueDate ([MS-OXOTASK] section 2.2.2.2.5)

0x8144

0x0040

2008/03/07 00:00:00.000

PidLidCommonEnd ([MS-OXCMSG] section 2.2.1.19)

0x81BB

0x0040

2008/03/07 08:00:00.000

PidLidTaskComplete

0x8148

0x000B

0x00 (FALSE)

PidLidTaskStatus

0x8145

0x0003

0x00000000

PidLidPercentComplete

0x8146

0x0005

0.0

PidLidReminderSet

0x8004

0x000B

0x00 (FALSE)

Note 3: The PidTagSwappedToDoData property contains the following binary data.

 000: 01 00 00 00 F9 00 00 00 01 00 00 00 52 00 65 00
 010: 76 00 69 00 65 00 77 00 00 00 00 00 00 00 00 00
 020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 0A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 0B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 0C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 0D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 0E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 0F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 1A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 1B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 1C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 1D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 1E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 1F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 200: 00 00 00 00 00 00 00 00 00 00 00 00 E0 80 E9 5A
 210: E0 80 E9 5A 60 C0 C3 0C 01 00 00 00

This binary data corresponds to the following values in the fields of the PidTagSwappedToDoData property.

Field

Value

ulVersion

0x00000001

dwFlags

0x000000F9

dwToDoItem

0x00000001

wszFlagTo

"Review"

rtmStartDate

0x5AE980E0 (None)

rtmDueDate

0x5AE980E0 (None)

rtmReminder

0x0CC3C060 (2008/03/07 00:00:00.000)

fReminderSet

0x00000001 (TRUE)

To delete the following properties, the client sends a RopDeletePropertiesNoReplicate ROP request ([MS-OXCROPS] section 2.2.8.9).

Property

Property ID

Property type

PidTagSwappedToDoStore

0xE2C

0x0102

PidLidTaskStartDate ([MS-OXOTASK] section 2.2.2.2.4)

0x8143

0x0040

PidLidCommonStart ([MS-OXCMSG] section 2.2.1.18)

0x81BC

0x0040

PidLidTaskDateCompleted ([MS-OXOTASK] section 2.2.2.2.9)

0x8149

0x0040

PidLidReminderTime

0x8005

0x0040

PidLidReminderSignalTime

0x8006

0x0040

PidTagReplyTime

0x0030

0x0040

Finally, to persist the Message object on the server, the client sends a RopSaveChangesMessage ROP request ([MS-OXCROPS] section 2.2.6.3) followed by a RopRelease ROP request to release the object.