Content interchange bus

Disclosed is a content interchange bus that is configured for (i) receiving a first content creation request from a client, the first content creation request including a first content object that includes data intended for distribution, a first metadata name/value pair describing the first content object, and a second metadata name/value pair describing a first content container; (ii) creating the first content container in the cloud storage platform; (iii) storing the first content object in the cloud storage platform; (iv) receiving a first message from the client, the first message including the first content container's uniform resource identifier and/or the first content object's uniform resource identifier, the message including a topic string that includes a first routing string; and (v) routing the first message to a first subscriber based at least partially on the topic string including the first routing string.

FIELD OF THE INVENTION

The present invention embraces a system for exchanging content via messages. The system typically includes a content interchange bus for routing messages. Messages may include one or more pointers to content stored in a cloud storage platform. These pointers may then be used to retrieve content from the cloud storage platform.

BACKGROUND

In many business transactions it is often necessary to exchange large amounts of structured and/or unstructured data. For example, in the mortgage industry many documents must be completed and/or provided as part of the loan application process. In electronic form, the total size of these documents can be substantial (e.g., several gigabytes). Various messaging systems can provide for the exchange of documents, however, these messaging systems typically allow for limited message payloads and, thus, are typically inadequate for large content transfers (e.g., due to large documents and/or a large volume of documents). Accordingly, a need exists for an improved way of transferring large content between parties.

SUMMARY

In one aspect, the present invention embraces a system for exchanging content via messages. The system typically includes a content interchange bus that includes a processor, a memory, and a messaging module stored in the memory and executable by the processor. The messaging module is typically configured for receiving a first content creation request from a client, the first content creation request including a first content object that includes (i) data intended for distribution, (ii) a first metadata name/value pair describing the first content object, and (iii) a second metadata name/value pair describing a first content container. The messaging module is typically configured for creating the first content container in a cloud storage platform, the first content container defining a uniform resource identifier indicating its location in the cloud storage platform, and storing the first content object in the cloud storage platform, the first content object defining a uniform resource identifier indicating its location in the cloud storage platform. The messaging is also typically configured for storing a subscription list, the subscription list associating a first subscriber with a first routing string.

Subsequently, the messaging module receives a first message from the client. The first message typically includes the first content container's uniform resource identifier and/or the first content object's uniform resource identifier. The message also typically includes a topic string that includes the first routing string. Based at least partially upon the topic string including the first routing string, the messaging module routes the first message to the first subscriber. Later, the messaging module receives a first content retrieval request from the first subscriber, the first content retrieval request including the first content container's uniform resource identifier and/or the first content object's uniform resource identifier. Based at least partially upon the first content retrieval request including the first content container's uniform resource identifier and/or the first content object's uniform resource identifier, the messaging module provides a copy of the first content object to the first subscriber.

In another aspect, the present invention embraces a method for exchanging content via messages. The method typically includes: receiving a first content creation request from a client, the first content creation request including a first content object that includes (i) data intended for distribution, (ii) a first metadata name/value pair describing the first content object, and (iii) a second metadata name/value pair describing a first content container; creating the first content container in a cloud storage platform, the first content container defining a uniform resource identifier indicating its location in the cloud storage platform; storing the first content object in the cloud storage platform, the first content object defining a uniform resource identifier indicating its location in the cloud storage platform; storing a subscription list, the subscription list associating a first subscriber with a first routing string; receiving a first message from the client, the first message including the first content container's uniform resource identifier and/or the first content object's uniform resource identifier, the message including a topic string that includes the first routing string; routing the first message to the first subscriber based at least partially on the topic string including the first routing string; receiving a first content retrieval request from the first subscriber, the first content retrieval request including the first content container's uniform resource identifier and/or the first content object's uniform resource identifier; and providing a copy of the first content object to the first subscriber based at least partially upon the first content retrieval request including the first content container's uniform resource identifier and/or the first content object's uniform resource identifier.

DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION

In accordance with embodiments of the invention, the term “electronic data” as used herein includes any information electronically stored or produced. For example, electronic data may include, but is not limited to mechanical, facsimile, electronic, magnetic, digital or other programs (private, commercial, work-in-progress, etc.), programming notes, instructions, listings of electronic mail receipts, output resulting from the use of any software program, including word processing documents, spreadsheets, database files, charts, graphs and outlines, electronic mail or “e-mail,” personal digital assistant (“PDA”) messages, instant messenger messages, operating systems, source code of all types, programming languages, linkers and compilers, peripheral drives, PDF files, PRF files, batch files, ASCII files, crosswalks, code keys, pull down tables, logs, file layouts and any and all miscellaneous files or file fragments, deleted file or file fragment. Electronic data may also include any and all items stored on computer memory or memories, hard disks, floppy disks, zip drives, CD-ROM discs, Bernoulli Boxes and their equivalents, magnetic tapes of all types and kinds, microfiche, punched cards, punched tape, computer chips (including but not limited to EPROM, PROM, ROM and RAM of any kind) on or in any other vehicle for digital data storage or transmittal, files, folder tabs, or containers and labels appended to or associated with any physical storage device associated with each original and each copy.

Furthermore, embodiments of the present invention use the term “subscriber.” It will be appreciated by someone with ordinary skill in the art that the user may be an individual, law firm, financial institution, government organization, corporation, or other entity that may wish to receive electronic data (e.g., electronic documents). Embodiments of the present invention also use the term “client” to describe a company, business, financial institution, individual, or other entity that wishes to distribute electronic data (e.g., electronic documents). For example, the client may be a financial institution desiring to distribute document relating to a loan application process. Clients and subscribers may be part of the same organization or different organizations.

In accordance with embodiments of the invention, the terms “financial institution” and “financial entity” include any organization that processes financial transactions including, but not limited to, banks, credit unions, savings and loan associations, investment companies, stock brokerages, assess management firms, insurance companies and the like. In specific embodiments of the invention, use of the term “bank” is limited to a financial entity in which account-bearing customers conduct financial transactions, such as account deposits, withdrawals, transfers and the like.

Although some embodiments of the invention herein are generally described as involving a “financial institution,” one of ordinary skill in the art will appreciate that other embodiments of the invention may involve other businesses that take the place of or work in conjunction with the financial institution to perform one or more of the processes or steps described herein as being performed by a financial institution. Still in other embodiments of the invention the financial institution described herein may be replaced with other types of businesses that wish to receive or distribute electronic data.

In one aspect, the present invention embraces a method of exchanging content via messages. In another aspect, the present invention embraces a system that can be used to exchange content via messages. In this regard,FIGS. 1A-1Bdepict a method100of exchanging content via messages in accordance with an exemplary embodiment of the present invention. Moreover,FIG. 2depicts a system200for exchanging content via messages in accordance with an exemplary embodiment of the present invention. The system200for exchanging content via messages is typically configured to perform one or more steps of the method100of exchanging content via messages.

As depicted inFIG. 2, the system200typically includes a content interchange bus210that is in communication with a cloud storage platform215. One or more clients220A-220B and one or more subscribers225A-225C are typically in communication with the content interchange bus210.

As illustrated inFIG. 2, the content interchange bus210typically includes a communication device230, a processor235(e.g., a processing device), and a memory240(e.g., a memory device). As used herein, the term “processor” generally includes circuitry used for implementing the communication and/or logic functions of the particular system. For example, the processor235may include a digital signal processor device, a microprocessor device, and various analog-to-digital converters, digital-to-analog converters, and other support circuits and/or combinations of the foregoing. Control and signal processing functions of the system are allocated between these processing devices according to their respective capabilities. The processing device may include functionality to operate one or more software programs based on computer-readable instructions thereof, which may be stored in a memory device.

The processor235is operatively coupled to the communication device230and the memory240. The processor235uses the communication device230to communicate with the cloud storage platform215and with the one or more clients220A-220B and one or more subscribers225A-225C. As such, the communication device230generally includes a modem, server, or other device for communicating with the cloud storage platform215and with the one or more clients220A-220B and one or more subscribers225A-225C. Each client and subscriber may use any suitable device for communicating with the content interchange bus210. For example, a client or subscriber may use a suitable communication device, including mobile devices, such as a cellular telecommunications device (e.g., a cell phone or mobile phone), personal digital assistant (PDA), a mobile Internet accessing device, or other user system including, but not limited to pagers, televisions, gaming devices, laptop computers, desktop computers, cameras, video recorders, audio/video player, radio, GPS devices, any combination of the aforementioned, or the like.

The content interchange bus210also typically includes a messaging module245stored in the memory240(e.g., in the form of computer-readable instructions stored in the memory240). The messaging module245is typically configured to perform one or more steps of the method100depicted inFIG. 1.

The cloud storage platform215may allow for on-demand network access to a shared pool of content provided by clients and/or subscribers, in the form of cloud resources (e.g., networks, servers, storage, services, etc.). The network access may be a global area network (GAN), such as the Internet, a wide area network (WAN), a local area network (LAN), or any other type of network or combination of networks. The network may provide for wireline, wireless, or a combination wireline and wireless communication between devices on the network. The content may include structured and/or unstructured data that a client wishes to provide to one or more subscribers. The content may also include structured and/or unstructured data provided by one or more subscribers. The cloud storage platform215may support one or more protocols, such as web-based protocols (e.g., representational state transfer (REST) and web service (WS)) and traditional file system protocols (e.g., Network File System (NFS) and Common Internet File System (CIFS)), for uploading and downloading content.

Any suitable cloud storage platform may be employed. In this regard, the cloud storage platform215may take the form of several different models. These models may include, but are not limited to, the private model, public model, community model, and hybrid model. In some embodiments, the cloud storage platform215may be provided in a private model. The private model allows the cloud storage platform215to only be used only be a single entity. In some embodiments, the cloud storage platform215may be provided in a public model. The public model allows the cloud storage platform215to be available to the public or to multiple entities. In some embodiments, the cloud storage platform215may be provided in a community model. The community model allows the cloud storage platform215to be accessed and/or used by a group of related entities. In some embodiments, the cloud storage platform215may be provided in a hybrid model. In the hybrid model the cloud storage platform215may be used both publicly and privately based on the provider's requests.

In this regard,FIG. 2depicts direct access to the cloud storage platform215being limited to the content interchange bus210. In other words, the content interchange bus210may act as an intermediary between the cloud storage platform215and the clients220A-220B and subscribers225A-225C. That said, it within the scope of the present invention for the clients220A-220B and subscribers225A-225C to have direct access to the cloud storage platform215.

As noted,FIGS. 1A-1Bdepict a method100of exchanging content via messages in accordance with an exemplary embodiment of the present invention.

In step110, a content creation request is receiving from a client (e.g., from the first client220A or the second client220B). The content creation request may be received by the content interchange bus210or by the cloud storage platform215. The content creation request includes a first content object. Alternatively, the content creation request may include a plurality of content objects.

Each content object typically includes data intended for distribution (e.g., to one or more subscribers), a first metadata name/value pair describing the first content object, and a second metadata name/value pair describing a first content container. The data may be any structured and/or unstructured data that the client wishes to distribute to one or more subscribers. For example, the data may be one or more electronic documents. The first metadata name/value pair describes the information contained in the data so that it can be understood and processed. In one embodiment, the first metadata name/value pair may allow for the data to be automatically understood and processed by a computing system (e.g., by a computing system operated by a subscriber). The second metadata name/value pair identifies a content container (e.g., a folder) to which the first content object is associated. Each content container may be associated with one or more content objects.

A logical view of an exemplary content object300is depicted inFIG. 3A. As depicted inFIG. 3A, the exemplary content object300includes object data, which is intended for distribution, and a plurality of metadata name/value pairs.

Based upon the needs of clients and subscribers, it is within the scope of the present invention for content objects to include additional metadata name/value pairs (e.g., as depicted inFIG. 3A). For example, in one embodiment, the first content object may include a third metadata name/value pair that describes a deletion tag. This deletion tag is typically set to a retain value, which indicates to the cloud storage platform that the first content object should be retained and not deleted. In the event that the deletion tag's value is changed to a delete value, the cloud storage platform will then typically schedule the first content object for deletion (e.g., to delete the content object after a predetermined period of time).

If a content object is intended to be accessed by a plurality of users (e.g., by a plurality of subscribers), then the content object may have a plurality of deletion tags (e.g., metadata value/pairs), each of which is each of which is associated with a particular user. Once a user-specific deletion tag has been set to a delete value, the user's permission to access the content object is removed instead of scheduling the content object for deletion. That said, once all of a content object's user-specific deletion tags have been set to a delete value, the content object may then be scheduled for deletion.

In one embodiment, the content interchange bus210and/or the cloud storage platform215may authenticate the identity of the client and determine whether the client is authorized to upload content. In this regard, any suitable way of authenticating the identity of the client and determining that the client is authorized is within the scope of the present invention. For example, the client may provide a username and password to establish authentication and authorization. The Security Assertion Markup Language (SAML) may be used to exchange authentication and authorization information (e.g., via tokens). In addition, a secured connection between a user and the content interchange bus210and/or the cloud storage platform215is typically provided to ensure a secure transmission channel (e.g., for a content object or content container).

If the first content container, which was identified in the first content object, has not yet been created, then, in step115, the first content container is created in the cloud storage platform215. If the first content container identified in the content object already exists, then this step may be skipped. In either case, the first content container typically defines a uniform resource identifier (URI), which indicates the location of the first content container in the cloud storage platform. In other words, the URI acts as a pointer to the location of the content container in the cloud storage platform. The first content container's URI may subsequently be used by a user (e.g., a client or a subscriber) to access the content container. Accordingly, each content container typically has a unique URI.

A logical view of an exemplary content container350is depicted inFIG. 3B. As depicted inFIG. 3B, the exemplary content container350includes one or more content objects. In one embodiment, instead of including the content objects themselves, the content container350may include a reference (e.g., a location pointer) to the content objects that are associated with the content container350. The exemplary content container350also includes one or more metadata name/value pairs. For example, the content container may include a first metadata name/value pair describes the information (e.g., content objects) contained in the content container so that it can be understood and processed. The content container may also include a second metadata name/value pair that describes a deletion tag. This deletion tag is typically set to a retain value, which indicates to the cloud storage platform that the first content container should be retained and not deleted. In the event that the deletion tag's value is changed to a delete value, the cloud storage platform will then typically schedule the first content container and all of the content objects associated with the first content container for deletion.

In step120, the first content object is stored in the cloud storage platform215. Typically, the first content object is stored within the first content container (e.g., folder) identified in the first metadata name/value pair to which the first content object is associated. The first content object typically defines a uniform resource identifier (URI), which indicates the location of the first content object in the cloud storage platform. In other words, the URI acts as a pointer to the location of the first content object in the cloud storage platform. The content object's URI may subsequently be used by a user (e.g., a client or a subscriber) to access the content object. Accordingly, each content object typically has a unique URI.

In one embodiment, the cloud storage platform215may be configured to automatically delete content objects and/or content containers after a predetermined period of time (e.g., several months or years). Accordingly, content may not remain stored in cloud storage platform215indefinitely.

In step125, one or more subscription lists are stored. In one embodiment, one or more subscription lists are stored in the cloud storage platform215. Alternatively, one or more subscriptions lists may be stored in the memory240of the content interchange bus210. Each subscription list includes one or more routing strings. Each routing string includes one or more characters, words, phrases, and/or the like to identify one or more users to which a particular message should be routed. Each subscription list also includes the identity and routing information for one or more users (e.g., one or more of the clients220A-220B and the subscribers225A-225C) associated with each routing string. By way of example, a subscription list may indicate that (i) a first subscriber225A is associated with a first routing string, (ii) a the first subscriber225A and a third subscriber225C are associated with a second routing string, and (iii) the first client220A is associated with a third routing string. In one embodiment, a client may upload a subscription list to the cloud storage platform215and/or to the content interchange bus210. In another embodiment, a subscription list may be updated after a client sends a request to the content interchange bus to change a subscription list (e.g., to add a routing string, remove a routing string, add subscribers associated with a routing string, and/or remove subscribers associated with a routing string).

In step130, a first message is received by the content interchange bus210from the client (e.g., from the first client220A). The message may be automatically generated by the client (e.g., automatically generated by an application using a client computing device) or manually generated by the client. The message typically includes a topic string and a payload. The topic string in the message typically includes a routing string contained in a subscription list. The topic string may also include one or more action strings. Each action string is more or characters that can be recognized by the recipient(s) of the message. For example, the action string may be automatically recognized by a recipient application (e.g., a subscriber application) so that the application can automatically process (e.g., queue) the message. The payload of the message typically includes one or more uniform resource identifiers (URIs), where each URI corresponds to the location of a content object (e.g., the first content object) or a content container (e.g., the first content container) in the cloud storage platform215. Because the first message includes a URI (e.g., a pointer) corresponding to the location of a content object or a content container in the cloud storage platform215, the first message does not need to include a copy of the content object or the content container itself.

The content interchange bus210is typically able to send and receive any type of message that is suitable for use with the present invention. For example, the content interchange bus210may be capable of receiving instant messages.

To ensure that messages are authentic and only accessed by authorization user, the messages may employ public-key infrastructure (PKI). For example, authentication of a message sender and recipient (e.g., a client or a subscriber) may be provided through the user of digital certificates. In addition, public-key encryption may be used to ensure that the contents of a message can only be accessed by an authorized user.

Next, in step135, the first message is routed (e.g., transmitted) to one or more users (e.g., one or more of the clients220A-220B and the subscribers225A-225C) by the content interchange bus210based upon the message's topic string. For example, the first message may be routed to a first subscriber. In order to route the first message, the content interchange bus determines if the message's topic string includes a routing string found in a subscription list. If the message's topic string includes a routing string found in a subscription list, the message is then transmitted to each user (e.g., the first subscriber) that is associated with that routing string in the subscription list.

If the message's topic string does not include a routing string found in a subscription list, the message is typically not routed to a user. Instead, an error message is transmitted to the sender of the message (e.g., the client). This error message indicates to the sender that the message could not be routed because its topic string does not include a valid routing string.

Subsequently, in step140, a content retrieval request is received (e.g., by the content interchange bus210and/or the cloud storage platform215) from a user (e.g., by the first subscriber). The content request may be automatically generated by a user during the processing of a received message (e.g., after recognizing an action string). The content retrieval request typically includes one or more uniform resource identifiers (URIs), where each URI corresponds to the location of a content object (e.g., the first content object) or a content container (e.g., the first content container) in the cloud storage platform215. Typically, the URIs were previously provided to the user in a message (e.g., a message from a client and routed to the user by the content interchange bus210).

In this regard, the content interchange bus210and/or the cloud storage platform215may be configured to determine if each URI contained in the content retrieval request is valid (i.e., corresponds to a content object or content container located in the cloud storage platform215). If any URI is invalid, a notification indicating that one or more URIs is invalid may be transmitted to the user (e.g., subscriber) that sent the content retrieval request. This notification may be in the form of a message that is routed by the content interchange bus210using a subscription list.

In step145, the content interchange bus210and/or the cloud storage platform215determines if the sender (e.g., the first subscriber) of the content retrieval request is authorized to access each content object and/or content container associated with each URI included in the content retrieval request. In this regard, any suitable way of authenticating the identity of the sender of the content retrieval request (e.g., the first subscriber) and determining that the sender of the content retrieval request is authorized is within the scope of the present invention. For example, the content interchange bus210and/or the cloud storage platform215may track which users are allowed access to which content objects and content containers (e.g., by employing subscription lists). The identity of the sender may then be compared against a list of users that are authorized to access each content object and content container referred to in the content retrieval request. The sender may provide a username and password to establish authentication and authorization.

If the sender of the content retrieval request is not authorized to access any content object and/or content container associated with the one or more URIs contained in the content retrieval request, then, in step155, the content retrieval request may be canceled. In addition, a notification indicating that the content retrieval request has been canceled may be transmitted to the sender of the content retrieval request. This notification may be in the form of a message that is routed by the content interchange bus210using a subscription list.

If the sender of the content retrieval request is authorized to access some, but not all, of the content objects and/or content containers associated with the one or more URIs contained in the content retrieval request, then a notification indicating such may be transmitted to the sender of the content retrieval request. This notification may be in the form of a message that is routed by the content interchange bus210using a subscription list.

By determining if the sender of the content retrieval request is authorized, an unauthorized individual or entity who acquires the URI for a content object or content container will not be able to gain access to that content object or content container without the permission to do so.

In step150, for each content object URI in the content retrieval request, a copy of that content object associated with that content object URI is transmitted (e.g., using a secure transmission channel) to the sender (e.g., to a sender application) of the content retrieval request if the sender is authorized to access that content object. In addition, for each content container URI in the content retrieval request, a copy of the content container associated with that content container URI, including a copy of each content object associated with the content container, is transmitted to the sender (e.g., the first subscriber) if the sender is authorized to access that content container. By providing a copy of content objects and content containers instead of direct access, asynchronous access to the same content objects and/or content containers can be provided to a plurality of users (e.g., subscribers and clients).

After receiving a copy of the content object or content container, the sender of the content retrieval request may then automatically process the content object or content container. An action string in a message that triggered the content retrieval request may aid a sender application in knowing how to process data in the content object or content container.

Although a copy of one or more content objects is typically provided to an authorized sender of a content retrieval request, the sender is typically unable to alter or modify a content object or content container that is stored in the cloud storage platform215. That said, it is within the scope of the present invention for the content retrieval request to include a deletion request related to one or more content objects or content containers. If the content retrieval request includes a deletion request, then the deletion tag (i.e., the third metadata name/value pair) for each content object and content container referred to in the deletion request may be set to a deletion value. Subsequently, the cloud storage platform may delete each content object and content container based upon the deletion tag being set to a deletion value. Accordingly, a subscriber or a client may be able delete a content object and/or content container once it is no longer needed. That said, in the event that a content object or content container has a plurality of user-specific deletion tags, setting a deletion tag specific to a particular user to a deletion value will instead have the effect of removing that user's permission to access the content object. Once all of a content object's or content container's user-specific deletion tags have been set to a delete value, the content object or content container may then be scheduled for deletion.

In some embodiments, a subscriber may wish to provide a modified version of a content object or a new content object to another user (e.g., to the client that uploaded the original content object to the cloud storage platform). For example, the subscriber may wish to modify an electronic document uploaded by a client or provided a new electronic document to the client. By way of further example, a subscriber application may automatically wish to upload a modified version of a content object or a new content object generated after processing a content object. Accordingly, in step155, the content interchange bus210or the cloud storage platform215may receive (e.g., using a secure transmission channel) a new or modified content object from the subscriber (e.g., in the form of content creation request). The new or modified content object typically includes data intended for distribution, a first metadata name/value pair describing the new or modified content object, and a second metadata name/value pair describing a content container. The first metadata name/value pair describes the information contained in the data so that it can be understood and processed. The second metadata name/value pair identifies a content container (e.g., a folder) to which the content object is associated. For a modified content object, the second metadata name/value pair will typically identify the same content container as the original version of the content object.

In step160, the new or modified content object is stored in the cloud storage platform215. Typically, the new or modified content object is stored within the content container (e.g., folder) identified in the first metadata name/value pair to which the content object is associated. The content object defines a uniform resource identifier (URI), which indicates the location of the content object in the cloud storage platform. For a modified content object, the URI will typically differ from the URI of the original content object.

In step165, a message is received by the content interchange bus210from the subscriber. The message typically includes a topic string and a payload. The topic string in the message typically includes a routing string contained in a subscription list. The payload of the message typically includes one or more uniform resource identifiers (URI), where each URI may corresponds to the location of the new or modified content object provided by the subscriber. The message may be automatically generated by the subscriber (e.g., automatically generated by a subscriber computing device) or manually generated by the subscriber.

In step170, the message is routed (e.g., transmitted) to one or more users (e.g., one or more of the clients220A-220B and the subscribers225A-225C) by the content interchange bus210based upon the message's topic string. In order to route the message, the content interchange bus determines if the message's topic string includes a routing string found in a subscription list. If the message's topic string includes a routing string found in a subscription list, the message is then transmitted to each user (e.g., client) that is associated with that routing string in the subscription list.

If the message's topic string does not include a routing string found in a subscription list, the message is typically not routed to a user. Instead, an error message is transmitted to the sender of the message (e.g., a client). This error message indicates to the sender that the message could not be routed because its topic string does not include a valid routing string.

In one embodiment, the content interchange bus210is configured to track the state of messages (e.g., messages sent by a client or sent by a subscriber) that it routes. For example, the content interchange bus210may track whether a message has been successfully sent and received by the intended recipient. In addition, the content interchange bus210may track whether copies of the content objects and/or content containers having their associated URIs included in a message have been provided to the message's recipient(s). Furthermore, the content interchange bus210may track whether any of these steps have failed (e.g., there was an error in sending the message, the message was not successfully delivered to one or more recipients, or a recipient failed to request a copy of a content object or content container within a predefined period of time). The state of a message may then be provided by the content interchange bus210in a notification to the sender of the message. This notification may be in the form of a message that is routed by the content interchange bus210using a subscription list. Accordingly, the sender (e.g., a client or a subscriber) of the message can have notice of an error that occurs in message transmission. In addition, the sender can be able to know whether a copy of a content object or content container has been retrieved.

Computer-executable program code for carrying out operations of embodiments of the present invention may be written in an object oriented, scripted or unscripted programming language. However, the computer program code for carrying out operations of embodiments of the present invention may also be written in conventional procedural programming languages, such as the “C” programming language or similar programming languages.