3.1.4.3 Creating and Sending TableModified Event Notifications

If the client has subscribed to TableModified event notifications, by using the RopRegisterNotification ROP (section 2.2.1.2.1), the server SHOULD<12> require that a table view is created in order to send the TableModified event notifications, as specified in section 2.2.1.1.1. If a table view is required on the server, the server MUST receive a request from one of the following ROPs, each of which cause a table view to be created on the server: RopCollapseRow ([MS-OXCROPS] section 2.2.5.17), RopExpandRow ([MS-OXCROPS] section 2.2.5.16), RopFindRow ([MS-OXCROPS] section 2.2.5.13), RopQueryColumnsAll ([MS-OXCROPS] section 2.2.5.12), RopQueryPosition ([MS-OXCROPS] section 2.2.5.7), RopQueryRows ([MS-OXCROPS] section 2.2.5.4), RopSeekRow ([MS-OXCROPS] section 2.2.5.8), RopSeekRowFractional ([MS-OXCROPS] section 2.2.5.10), and RopSeekRowBookmark ([MS-OXCROPS] section 2.2.5.9). The server SHOULD then create a subscription to TableModified event notifications automatically for every table created on the server. The server MUST NOT create a subscription to table notifications for the tables that were created with a NoNotifications flag. For more details about the NoNotifications flag, see [MS-OXCFOLD] section 2.2.1.14.1 and [MS-OXCFOLD] section 2.2.1.13.1.

When a TableModified event occurs, the server generates a notification using one of the following three methods, listed in descending order of usefulness to the client.

  1. The server generates an informative notification that specifies the nature of the change (content or hierarchy), the value of the Folder ID structure, as specified in [MS-OXCDATA] section 2.2.1.1, the value of the Message ID structure, as specified in [MS-OXCDATA] section 2.2.1.2, and new table values. The TableRowAdded, TableRowDeleted, and TableRowModified events each produce informative notifications.

  2. The server generates a basic notification that does not include specifics about the change made. The TableChanged and TableRestrictionChanged events produce basic notifications.

  3. The server does not generate a notification at all.

The notification level is server implementation-specific; however, the server SHOULD generate informative notifications whenever possible and only generate a basic notification when it is not feasible to generate an informative notification.

The server SHOULD<13> stop sending notifications if the RopResetTable ROP ([MS-OXCROPS] section 2.2.5.15) is received, until a new table view is created using one of the following ROPs: RopCollapseRow, RopExpandRow, RopFindRow, RopQueryColumnsAll, RopQueryPosition, RopQueryRows, RopSeekRow, RopSeekRowFractional, or RopSeekRowBookmark.