can define their own means of transport between the client and the FE server. The session TransportProvider API provides the basic input-output operations that can be expected by any transport protocol to transfer the data between the client and the FE server. The TransportProvider API creates a transport session between the client and the server, which is responsible for all aspects of communi- cation between the client and the FE server. A "transaction" is a single unit of work and comprises a set of operations. All the operations of a transaction are completed or none are completed. CMS provides a Transaction API in which application-level transactions can be provided to define multiple object updates in a single transaction. Transaction support requires updat- ing multiple objects in one atomic operation with the ability to roll back in the event of failure of some subset of the operations in the transaction. The CMS defaults to performing all database operations in transaction mode, although transaction mode can be disabled. Transaction support ensures that the database operations involving a sequence of operations are considered as a single 11 Configuration Management CLIENT TO FE COMMUNICATION Class Main Creates Main Socket Client Client Socket Server Session FE Instance passed to NMS Server FE User Server Creates User Session Cannot process Processes Routes request to BE Requests & Sends Response FE TO BE COMMUNICATION Class Main Creates Main Socket Client FE Socket Server Session BE Instance passed to NMS Server BE User Server Creates User Session Processes Requests & Sends Response Figure 11.16 Communication between client, FE server and BE server. unit of work. For example, consider a network which has a set of nodes and sub- networks, which in turn also have sets of nodes. In a network discovery transaction, objects are added to the database only if every network discovery operation succeeds. Nesting a transaction makes it an operation of another transaction. This makes transactions more complex, but 