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.