Gli SMO (Service message object) sono SDO (Service Data Object) avanzati. L'SMO fornisce un livello di astrazione per l'elaborazione e la gestione dei messaggi scambiati tra servizi.
Si accede a tutte queste informazioni come DataObjects SDO ed una dichiarazione dello schema specifica la struttura complessiva dell'SMO. Lo schema viene generato da WebSphere Integration Developer.
Tutti gli SMO hanno la stessa struttura di base. La struttura consiste in un oggetto dati root denominato ServiceMessageObject, che contiene altri oggetti di dati che rappresentano l'intestazione, il contenuto ed i dati del contesto. Il contenuto dell'SMO contiene il payload del messaggio. Le intestazioni contengono informazioni originate da un collegamento di importazione o di esportazione specifico. Ad esempio, un collegamento JMS.
SMO fornisce un'interfaccia per accedere e modificare le intestazioni ed i payload del messaggio. SMO può rappresentare il contenuto logico di numerosi tipi di messaggio differenti.
WebSphere ESB interviene sui messaggi in esecuzione tra endpoint di interazione. All'interno di WebSphere ESB, i flussi di mediazione elaborano i messaggi come SMO.
WebSphere ESB crea oggetti SMO, che sono quindi disponibili per flussi di mediazione.
Alcuni degli oggetti SMO creati dal runtime vengono implementati da classi fornite dal runtime. Ad esempio, la classe ServiceMessageObject viene fornita da WebSphere ESB. Alcune delle classi di intestazione SMO vengono anche fornite dal runtime. Altri oggetti SMO creati dal runtime vengono implementati dalle classi create da uno sviluppatore.
Durante la creazione di flussi di mediazione, WebSphere Integration Developer specifica il tipo di contenuto del messaggio per ogni terminale (input, output o fail) e, facoltativamente, il tipo di informazioni sul contesto. WebSphere ESB utilizza queste informazioni per convertire i messaggi in oggetti SMO del tipo specificato.