Internal Message Format for Request Messages
This section discusses the format used to exchange request messages between the integration gateway and the application server. These messages are frequently referred to as IBRequest messages.
The Multipurpose Internet Mail Extension standard (MIME) is used as the basic structure for internal messaging. MIME has several advantages in that the standard is well-known and supported, and because it is text-based, it is human readable and can be easily serialized.
Messages using the internal format display in the integration gateway log file. Since the log file is a valuable tool for debugging, anyone reading the file will need to understand how the messages are structured.
Every request message contains three parts:
| Term | Definition |
|---|---|
|
Headers |
The first part of a request message contains headers which describe the attributes of the whole message. |
|
IBInfo (Integration Broker Information) |
The IBInfo (Integration Broker Information) section contains the credentials of the request as well as all other information required by the PeopleSoft Integration Broker to process the message. The IBInfo for a request has a specific XML structure which is used for all request messages in the system, regardless if the message is being sent to the application server or to the integration gateway. |
|
Content section |
The final section contains the message body of the original request. This is the payload and is what is ultimately delivered to the final destination. |
The following is an example of a request message in the PeopleSoft internal MIME format:
Message-ID: <-192.0.2.10@nowhere >
Mime-Version: 1.0
Content-Type: multipart/related; boundary="Integration_Server_MIME_Boundary"
Content-ID: PeopleSoft-Internal-Mime-Message
PeopleSoft-ToolsRelease: 8.55
--Integration_Server_MIME_Boundary
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Content-ID: IBInfo
Content-Disposition: inline
<?xml version="1.0" ?>
<IBInfo>
<TransactionID>
<![CDATA[ caa3a040-bde5-11da-914c-ecaede80d83b]]>
</TransactionID>
<ExternalOperationName>
<![CDATA[ QE_FLIGHTPLAN_TRANSFORM.VERSION_1]]>
</ExternalOperationName>
<OperationType>async</OperationType>
<From>
<RequestingNode>
<![CDATA[ QE_LOCAL]]>
</RequestingNode>
<RequestingNodeDescription>
<![CDATA[ ]]>
</RequestingNodeDescription>
<NodePassword>
<![CDATA[ password]]>
</NodePassword>
<ExternalUserName>
<![CDATA[ ]]>
</ExternalUserName>
<ExternalUserPassword>
<![CDATA[ ]]>
</ExternalUserPassword>
<AuthToken>
<![CDATA[ owAAAAQDAgEBAAAAvAIAAAAAAAAsAAAABABTaGRyAk4AbQg4AC4AMQ
AwABTFZOonLEjJaPtR6v02oadvRUoSq2MAAAAFAFNkYXRhV3icHYhNDkAwGERfEQ
srFyFN0cZSaGz8xAmcwA0dzug3yZv53gMUeWaM+s1IV11EFnZOysjBSv2bm01mZl
L3Dqt4GrETHSHtQCs6cWBM2ybr9fMBbP0LSQ==]]>
</AuthToken>
<WSA-ReplyTo>
<![CDATA[ ]]>
</WSA-ReplyTo>
<NodeDN>
<![CDATA[ ]]>
</NodeDN>
<OrigUser>
<![CDATA[ QEDMO]]>
</OrigUser>
<OrigNode>
<![CDATA[ QE_LOCAL]]>
</OrigNode>
<OrigProcess>
<![CDATA[ QE_FLIGHTDATA]]>
</OrigProcess>
<OrigTimeStamp>2006-03-27T15:02:39.280000-0800</OrigTimeStamp>
<DirectGatewayRequest />
<SyncServiceTimeout />
<ExternalMessageID>
<![CDATA[ ]]>
</ExternalMessageID>
<SegmentsUnOrder>N</SegmentsUnOrder>
<ConversationID>
<![CDATA[ ]]>
</ConversationID>
<WSA-MessageID>
<![CDATA[ ]]>
</WSA-MessageID>
<InReplyToID>
<![CDATA[ ]]>
</InReplyToID>
<DataChunk>
<![CDATA[ ]]>
</DataChunk>
<DataChunkCount>
<![CDATA[ ]]>
</DataChunkCount>
</From>
<WS-Security>
<WSTokenType>
<![CDATA[ ]]>
</WSTokenType>
</WS-Security>
<To>
<DestinationNode>
<![CDATA[ QE_IBTGT]]>
</DestinationNode>
<FinalDestinationNode>
<![CDATA[ ]]>
</FinalDestinationNode>
<AppServerDomain>
<![CDATA[ ]]>
</AppServerDomain>
</To>
<Cookies>
<![CDATA[ ]]>
</Cookies>
<PathInfo>
<![CDATA[ ]]>
</PathInfo>
<HttpSession>
<SessionID>
<![CDATA[ ]]>
</SessionID>
</HttpSession>
<QStrArgs />
<ContentSections>
<ContentSection>
<ID>ContentSection0</ID>
<NonRepudiation>N</NonRepudiation>
<Headers>
<version>
<![CDATA[ VERSION_1]]>
</version>
<encoding>
<![CDATA[ base64(deflate)]]>
</encoding>
<encodedlength>
<![CDATA[ 948(709)]]>
</encodedlength>
<length>
<![CDATA[ 2840]]>
</length>
</Headers>
</ContentSection>
</ContentSections>
<PublishNode>
<![CDATA[ QE_LOCAL]]>
</PublishNode>
<Queue>
<![CDATA[ QE_FLIGHTPLAN_CHNL]]>
</Queue>
<SubQueue>
<![CDATA[ c9de8110-bde5-11da-be79-846b4e717ebf]]>
</SubQueue>
<VisitedNodes>
<![CDATA[ QE_LOCAL|]]>
</VisitedNodes>
<Connector>
<ConnectorName>
<![CDATA[ PSFTTARGET]]>
</ConnectorName>
<ConnectorClassName>
<![CDATA[ PeopleSoftTargetConnector]]>
</ConnectorClassName>
<RemoteFrameworkURL>
<![CDATA[ ]]>
</RemoteFrameworkURL>
<ConnectorParameters>
<ConnectorParam>
<Name>
<![CDATA[ URL]]>
</Name>
<Value>
<![CDATA[ ]]>
</Value>
</ConnectorParam>
</ConnectorParameters>
<ConnectorHeaders />
</Connector>
<AttachmentSection ResponseAsAttachment="N" />
</IBInfo>
--Integration_Server_MIME_Boundary
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Content-ID: ContentSection0
Content-Disposition: inline
eJydll1P2zAUhu8n7T+g/gAKFdt6UYxOHCe1FH9gO1RwE1UMTUiMTRRN27+fk7SpvwItd/F57c
TvG+c5WVz9/fl08ufhZfP46/lycn56NrlCnz8trklTVLRcGlkBb4wCrguhGFoUjw9P382/3w8b
tJ+Ug4GT+6f1ZnM5UZNOAMxrlhF18mrnXk76wWTaaUzTRhOuxU7FS9hpopBxEbC5lSSuY6gqTU
seK/q6hlyJhIIFY+fp8iwuE8yCYk40VpXgZVCfeml0i1eSN1IRTYw+Ih1twFDBG569KUuhU/KK
gBQ8HVdR37VGeUHDzW9FIdtbx9oK1JJAnnDsWOxmcrihZbfBIxyv4FYKys2Y5YyAolHgVrDHsk
z4hMpQU+cJpYJRxb7REam1nnz8DakEpoYSHWs2iPakJCLbR7T1kIPaZnhEZv0yTSqCnXcWT2EiZ
alfLSQZ0TNQGkPiJHQLR2I3pYFU3V5yTqrWX/yq7iirzTIWpCoS2blh9esVA0b4Mcm9831BORIJ
TWy//9q0JDg8AlNnc2ghbZrMQ6TFalnbuBocflZQ59S0yAvjz0C3J3hsHdOlPQ/XFkLhUZVKYKJ
1Q7n1zjGJbMs6q6heNqquSEMTN+Y2Em69hCZ7X/bCbQts8yNfv67Rwrysnzfr+1fbWg5rFmj+bT
7ro9tV/H6B7C1UN8GpbdsGmp9eXHRaO9i3DVScz7f37IZue0Bfv1z0DxwqQ49AGXRKPxh6BMrwU
J7tegSyiRRduR3se8TAgrehiBKmXSh6GHTQ5+POR1yANQ9lIb48ZH0YUykXAaYCMKVg5AEohI4L
mhAuHlAGiHwQHCkvDjhcVAx4iJAwPfAv4KCHOX0/7PRRdw87utfFU53bp1X4K/MmvRDh5WLqFhy
CJajVz4+qLr4SyEJnFjZhLeSWzyqPTx6KpgOh9k6D/9z/1gQ1Ww==
--Integration_Server_MIME_Boundary--
IBRequest Header Section
The first part of a request message contains headers which describe the attributes of the whole message.
Message-ID: <-192.0.2.10@nowhere >
Mime-Version: 1.0
Content-Type: multipart/related; boundary="Integration_Server_MIME_Boundary"
Content-ID: PeopleSoft-Internal-Mime-Message
PeopleSoft-ToolsRelease: 8.55
--Integration_Server_MIME_Boundary
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Content-ID: IBInfo
Content-Disposition: inline
IBRequest IBInfo Section
The following example shows an IBInfo section for a request message that was sent from the application server to the integration gateway (formatted for easier reading):
<?xml version="1.0" ?>
<IBInfo>
<TransactionID>
<![CDATA[ caa3a040-bde5-11da-914c-ecaede80d83b]]>
</TransactionID>
<ExternalOperationName>
<![CDATA[ QE_FLIGHTPLAN_TRANSFORM.VERSION_1]]>
</ExternalOperationName>
<OperationType>async</OperationType>
<From>
<RequestingNode>
<![CDATA[ QE_LOCAL]]>
</RequestingNode>
<RequestingNodeDescription>
<![CDATA[ ]]>
</RequestingNodeDescription>
<NodePassword>
<![CDATA[ password]]>
</NodePassword>
<ExternalUserName>
<![CDATA[ ]]>
</ExternalUserName>
<ExternalUserPassword>
<![CDATA[ ]]>
</ExternalUserPassword>
<AuthToken>
<![CDATA[ owAAAAQDAgEBAAAAvAIAAAAAAAAsAAAABABTaGRyAk4AbQg4AC4AMQ
AwABTFZOonLEjJaPtR6v02oadvRUoSq2MAAAAFAFNkYXRhV3icHYhNDkAwGERfEQ
srFyFN0cZSaGz8xAmcwA0dzug3yZv53gMUeWaM+s1IV11EFnZOysjBSv2bm01mZl
L3Dqt4GrETHSHtQCs6cWBM2ybr9fMBbP0LSQ==]]>
</AuthToken>
<WSA-ReplyTo>
<![CDATA[ ]]>
</WSA-ReplyTo>
<NodeDN>
<![CDATA[ ]]>
</NodeDN>
<OrigUser>
<![CDATA[ QEDMO]]>
</OrigUser>
<OrigNode>
<![CDATA[ QE_LOCAL]]>
</OrigNode>
<OrigProcess>
<![CDATA[ QE_FLIGHTDATA]]>
</OrigProcess>
<OrigTimeStamp>2006-03-27T15:02:39.280000-0800</OrigTimeStamp>
<DirectGatewayRequest />
<SyncServiceTimeout />
<ExternalMessageID>
<![CDATA[ ]]>
</ExternalMessageID>
<SegmentsUnOrder>N
</SegmentsUnOrder>
<ConversationID>
<![CDATA[ ]]>
</ConversationID>
<WSA-MessageID>
<![CDATA[ ]]>
</WSA-MessageID>
<InReplyToID>
<![CDATA[ ]]>
</InReplyToID>
<DataChunk>
<![CDATA[ ]]>
</DataChunk>
<DataChunkCount>
<![CDATA[ ]]>
</DataChunkCount>
</From>
<WS-Security>
<WSTokenType>
<![CDATA[ ]]>
</WSTokenType>
</WS-Security>
<To>
<DestinationNode>
<![CDATA[ QE_IBTGT]]>
</DestinationNode>
<FinalDestinationNode>
<![CDATA[ ]]>
</FinalDestinationNode>
<AppServerDomain>
<![CDATA[ ]]>
</AppServerDomain>
</To>
<Cookies>
<![CDATA[ ]]>
</Cookies>
<PathInfo>
<![CDATA[ ]]>
</PathInfo>
<HttpSession>
<SessionID>
<![CDATA[ ]]>
</SessionID>
</HttpSession>
<QStrArgs />
<ContentSections>
<ContentSection>
<ID>ContentSection0</ID>
<NonRepudiation>N</NonRepudiation>
<Headers>
<version>
<![CDATA[ VERSION_1]]>
</version>
<encoding>
<![CDATA[ base64(deflate)]]>
</encoding>
<encodedlength>
<![CDATA[ 948(709)]]>
</encodedlength>
<length>
<![CDATA[ 2840]]>
</length>
</Headers>
</ContentSection>
</ContentSections>
<PublishNode>
<![CDATA[ QE_LOCAL]]>
</PublishNode>
<Queue>
<![CDATA[ QE_FLIGHTPLAN_CHNL]]>
</Queue>
<SubQueue>
<![CDATA[ c9de8110-bde5-11da-be79-846b4e717ebf]]>
</SubQueue>
<VisitedNodes>
<![CDATA[ QE_LOCAL|]]>
</VisitedNodes>
<Connector>
<ConnectorName>
<![CDATA[ PSFTTARGET]]>
</ConnectorName>
<ConnectorClassName>
<![CDATA[ PeopleSoftTargetConnector]]>
</ConnectorClassName>
<RemoteFrameworkURL>
<![CDATA[ ]]>
</RemoteFrameworkURL>
<ConnectorParameters>
<ConnectorParam>
<Name>
<![CDATA[ URL]]>
</Name>
<Value>
<![CDATA[ ]]>
</Value>
</ConnectorParam>
</ConnectorParameters>
<ConnectorHeaders />
</Connector>
<AttachmentSection ResponseAsAttachment="N" />
</IBInfo>
While the basic structure is the same for all requests, not all elements are always required. An example of this is the Connector section. The Connector XML is used to tell the integration gateway to route a message to the named target connector. It also lists configuration parameters for the outbound request. This XML would only be seen in requests sent from the application server to the integration gateway. For requests going in the other direction, the section would be empty.
Note:
The only element that is always required is ExternalOperationName.
The following is a list of the most important elements that may appear in the IBInfo section of a request message:
| Element | Description |
|---|---|
|
IBInfo / ExternalOperationName |
The name of the requested service operation. |
|
IBInfo / Operation Type |
(Optional.) This is the type of service operation. The valid values are: asynchronous, synchronous and ping. |
|
IBInfo / TransactionID |
(Optional.) The transaction ID is used to uniquely identify a request. |
|
IBInfo / From / RequestingNode |
(Optional.) The requesting node is the node that sent the request to the current system. |
|
IBInfo / From / Password |
(Optional.) This is the password for the requesting node. |
|
IBInfo / From / DN |
(Optional.) For incoming requests, the DN gives the Distinguished Name extracted from the certificate authentication process. |
|
IBInfo / From / OrigNode |
(Optional.) For requests that cross multiple nodes, OrigNode is used to identify the node that initiated the request. |
|
IBInfo / From / OrigTimeStamp |
(Optional.) This timestamp corresponds to the time that the request was created. For requests that cross nodes, this is the time that the first request was created. |
|
IBInfo / To / DestinationNode |
(Optional.) This is the node to which the request will be delivered. |
|
IBInfo / To / FinalDestinationNode |
(Optional.) In cases where the message will be passed across several nodes, this value specifies the ultimate target of the message. |
|
IBInfo / QStrArgs |
(Optional.) Specific to incoming HTTP requests. These are the query string parameters found when the request was received by the HTTP listening connector. |
|
IBInfo / Cookies |
(Optional.) Specific to incoming HTTP requests. This is cookie string found when the request was received by the HTTP listening connector. |
|
IBInfo / PathInfo |
(Optional.) Specific to incoming HTTP requests. This is the path information extracted from the request. |
|
IBInfo / ContentSections / ContentSection |
(Optional.) This node provides metadata about the text present in the ContentSection. |
|
IBInfo / ContentSections / ContentSection / ID |
(Optional.) The index number of the content section. |
|
IBInfo / ContentSections / ContentSection / NonRepudiation |
(Optional.) Indicates as to whether nonrepudiation should be performed. |
|
IBInfo / ContentSections / ContentSection / Headers |
(Optional.) Provides additional information about the data. |
|
IBInfo / PublishingNode |
(Optional.) The node that published the message. |
|
IBInfo / Queue |
(Optional.) The queue to which the service operation was published. |
|
IBInfo / InternalInfo / AppMsg / SubQueue |
(Optional.) The subqueue to which the service operation was published. |
|
IBInfo / InternalInfo / AppMsg / VisitedNodes |
(Optional.) The list of nodes that have already received this message. This is useful when a message is being propagated across multiple nodes. |
|
IBInfo / InternalInfo / AppMsg / PublicationID |
(Optional.) The publication ID for this message. |
|
IBInfo / Connector |
(Optional.) Connector information instructs the gateway as to how to process the request. |
|
IBInfo / Connector / ConnectorName |
(Optional.) This is the proper name of the target connector to invoke to send the message. |
|
IBInfo / Connector / ConnectorClassName |
(Optional.) This is the class name of the target connector to invoke. |
|
IBInfo / Connector / ConnectorParameters |
(Optional.) Connector parameters are processing instructions for the target connector to be invoked. |
|
IBInfo / Connector / ConnectorHeaders |
(Optional.) Connector headers provide further metadata about the contents of the message to be sent. |
IBRequest Content Section
The content section of a request message features the message body.
--Integration_Server_MIME_Boundary
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Content-ID: ContentSection0
Content-Disposition: inline
eJydll1P2zAUhu8n7T+g/gAKFdt6UYxOHCe1FH9gO1RwE1UMTUiMTRRN27+fk7SpvwItd/F5
eJydll1P2zAUhu8n7T+7c TvG+c5WVz9/fl08ufhZfP46/lycn56NrlCnz8trklTVLRcGlkBb
4wCrguhGFoUjw9P382/3w TvG+8btJ+Ug4GT+6f1ZnM5UZNOAMxrlhF18mrnXk76wWTaaUzTRh
OuxU7FS9hpopBxEbC5lSSuY6gqtJ+Ug4GT+TUseK/q6hlyJhIIFY+fp8iwuE8yCYk40VpXgZVC
feml0i1eSN1IRTYw+Ih1twFDBG569KUuhU/KKgBQ8HVdR37VGeUHDzW9FIdtbx9oK1JJAnnDsWO
xmcrihZbfBIxyv4FYKys2Y5YyAolHgVrDHskz4hMpQU+cJpYJRxb7REam1nnz8DakEpoYSHWs2i
PakJCLbR7T1kIPaZnhEZv0yTSqCnXcWT2z4hMpQU+EiZalfLSQZ0TNQGkPiJHQLR2I3pYFU3V5y
TqrWX/yq7iirzTIWpCoS2blh9esVA0b4Mcm9831BORIJTWy//9q0JDg8AlNnc2ghbZrMQ6TFalnb
uBocflZQ59S0yAvjz0C3J3hsHdOlPQ/XFkLhUZVKYKJ1Q7n1zjGJbMs6q6heNqquSEMTN+Y2Em69
hCZ7X/bCbQts8yNfv67Rwrysnzfr+1fbWg5rFmj1Q7n1zjGJbMs6q6heNqquSEMTN++bT
7ro9tV/H6B7C1UN8GpbdsGmp9eXHRaO9i3DVScz7f37IZue0Bfv1z0DxwqQ49AGXRKPxh6BMrwU
J7tegSyiRRduR3se8TAgrehiBKmXSh6GHTQ5+POR1yANQ9lIb48ZH0YUykXAaYCMKVg5AEoh
J7tegSyiRRduR3se8TAgrehiBKmXSh6GHTQ5+I4LmhAuHlAGiHwQHCkvDjhcVAx4iJAwPfAv4KCHOX0
/7PRRdw87utfFU53bp1X4K/MmvRDh5WLqFhyCJajVz4+qLr4SyEJnFjZhLeSWzyqPTx6KpgOh9k6D
/9z/1gQ1Ww==