Integration Broker Message Structures

This section discusses the internal message formats for request messages and response messages, local compression, and how to access IBInfo elements.

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 easily serializable.

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:

Field or Control

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: <-123.123.123.123@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: <-123.123.123.123@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==

The internal format for response messages parallels that for request messages, and has the same basic MIME structure. These messages are frequently referred to as IBResponse messages.

There are three logical components to a MIME response message: the IBResponse header section, the IBInfo section, and the Content section.

The following code shows an example of a response message:

Message-ID: <32004392.1143500580241.JavaMail.KCOLLIN2@PLE-KCOLLIN2>
Date: Mon, 27 Mar 2006 15:03:00 -0800 (PST)
Mime-Version: 1.0
Content-Type: multipart/related; 
	boundary="----=_Part_4_9069393.1143500580221"
Content-ID: PeopleSoft-Integration-Broker-Internal-Mime-Message
PeopleSoft-ToolsRelease: 8.55

------=_Part_4_9069393.1143500580221
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Content-Disposition: inline
Content-ID: IBInfo

<?xml version="1.0"?><IBInfo><Status><StatusCode>0</StatusCode>
<MsgSet>158</MsgSet>

<MsgID>10000</MsgID><DefaultTitle>Integration Broker Response 
Message</DefaultTitle>

</Status><ContentSections><ContentSection><ID>ContentSection0</ID>
<NonRepudiation>N</NonRepudiation></ContentSection></ContentSections></IBInfo>
------=_Part_4_7210339.1008355101202

IBResponse Header

The first part of a response message contains headers which describe the attributes of the whole message.

Message-ID: <32004392.1143500580241.JavaMail.KCOLLIN2@PLE-KCOLLIN2>
Date: Mon, 27 Mar 2006 15:03:00 -0800 (PST)
Mime-Version: 1.0
Content-Type: multipart/related; 
	boundary="----=_Part_4_9069393.1143500580221"
Content-ID: PeopleSoft-Integration-Broker-Internal-Mime-Message
PeopleSoft-ToolsRelease: 8.55

IBResponse IBInfo Section

The format for the XML for the IBInfo for a response message is different than that for the request message. The following is a sample (formatted for easier reading):

<?xml version="1.0"?>
<IBInfo>
   <Status>
      <StatusCode>0</StatusCode>
      <MsgSet>158</MsgSet>
      <MsgID>10000</MsgID>
      <DefaultMsg>OK</DefaultMsg>
      <DefaultTitle>Integration Broker Response Message</DefaultTitle>  
   </Status>  
   <ContentSections>
      <ContentSection>
      <ID>ContentSection0</ID>
      <NonRepudiation>N</NonRepudiation>
      </ContentSection>
   </ContentSections>
</IBInfo>

The following is the list of all the elements that may be present in the IBInfo for a response message:

Element

Description

IBInfo / Status / StatusCode

Describes the result of the request. The possible values are:

  • 0 (zero). Request successfully processed.

  • 10. Temporary error occurred. Request can be resent.

  • 20. Fatal error occurred. Do not resend request.

  • 30. Request message is a duplicate of a message previously received.

IBInfo / Status / MsgSet

The MessageSetNumber for this message in the Message Catalog. Message set number 158 is assigned to the PeopleSoft Integration Broker.

IBInfo / Status / MsgID

The Message Number for this message in the Message Catalog. If no errors occurred during the processing of the request, the MsgID will be set to the value ‘10000’.

IBInfo / Status / DefaultTitle

Used if the message catalog is unavailable. This value corresponds to the “Message Text” for a given entry in the message catalog.

IBInfo / Status / DefaultMsg

Used if the message catalog is unavailable. This value corresponds to the “Explanation” for a given entry in the message catalog.

IBInfo / Status / Parameters

Parameters may be used to provide additional information for error responses.

IBInfo / ContentSection

A description of the content section returned with the response.

Note: Not all response messages will have a content section. The structure of the content section and all child elements is the same as was seen in the request IBInfo.

IBResponse Content Section

The content section of a response message features the message body only when working with SyncRequests

<?xml version="1.0"?>
<TestXml>This is a sample response message.</TestXml>

Error Codes and Message Catalog Entries

A response message may contain data relating to the processing of the request message, or it may contain error information if there were problems in fulfilling the request.

The status code describes the nature of the response message. The following table describes possible request message status codes and their meaning.

Value

Meaning

Description

0

Success

The message transport and processing were successful.

10

Retry

The transport was not successful. PeopleSoft Integration Broker will perform its retry logic and send the message again.

20

Error

An error occurred.

30

Duplicate message

The transaction ID for the message has already been received.

40

Acknowledgement error

This status is used for SOAP messages and indicates that the contents of the data is not proper, but the transport was successful.

50

Acknowledgement hold

Used for asynchronous chunking of messages from PeopleSoft to PeopleSoft nodes when sending multiple message segments.

All PeopleSoft Integration Broker error messages are stored in the message catalog. A short and long description for every error can be found there. Catalog entries are given a number, and this number is used in the response messages.

Here is a sample error message:

Message-ID: <32004392.1143500580241.JavaMail.KCOLLIN2@PLE-KCOLLIN2>
Date: Mon, 27 Mar 2006 15:03:00 -0800 (PST)
Mime-Version: 1.0
Content-Type: multipart/related; 
	boundary="----=_Part_4_9069393.1143500580221"
Content-ID: PeopleSoft-Integration-Broker-Internal-Mime-Message
PeopleSoft-ToolsRelease: 8.55

------=_Part_25_2235074.1008270392277
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Content-Disposition: inline
Content-ID: IBInfo

<?xml version="1.0"?><IBInfo><Status><StatusCode>10</StatusCode>
<MsgSet>158</MsgSet><MsgID>10721</MsgID><Parameters count="1"><Parm>404</Parm></Parameters>
<DefaultTitle>Integration Gateway Error</DefaultTitle></Status></IBInfo>
------=_Part_25_2235074.1008270392277--

All PeopleSoft Integration Broker errors use message set 158. The actual error seen here is 10721. Going to the message catalog, the description for message set 158, error 10721 is:

Message Text: Integration Gateway - External System Contact Error

Explanation: Integration Gateway was not able to contact the external system.  
The network location specified may be incorrect, or the site is permanently 
or temporarily down.

Therefore this error was created by the integration gateway when it tried to send a request message to an external system.

This section provides an overview of local compression and discusses how to:

  • Set local compression for asynchronous messages.

  • Set local compression for synchronous messages.

  • Override local compression for synchronous messages.

Understanding Local Compression

The integration engine compresses and base64–encodes messages destined for the PeopleSoft listening connector on its local integration gateway.

Setting Local Compression for Asynchronous Messages

Asynchronous messages are always compressed and base64 encoded when sent to the integration gateway. There are no settings you need to make.

Setting Local Compression for Synchronous Messages

In PSAdmin you can set a threshold message size above which the system compresses synchronous messages. The setting is shown here:

Values for config section - Integration Broker
    Min Message Size For Compression=10000

Do you want to change any values (y/n)? [n]:

The value is the message size in bytes; the default value is 10000 (10 kilobytes). You can specify a setting of 0 to compress all messages.

To turn off compression, set the value to -1.

Warning! Turning compression off can negatively impact system performance when transporting synchronous messages greater than 1 MB. As a result, you should turn off compression only during integration development and testing.

Note: This setting does not affect the compression of messages that the integration gateway sends using its target connectors.

Overridding Local Compression for Synchronous Messages

You can override the PSAdmin message compression setting for synchronous messages at the transaction level. The following method on the IBInfo object in the Message class is provided for this purpose:

&MSG.IBInfo.CompressionOverride

The valid parameters for this method are: %IntBroker_Compress, %IntBroker_UnCompress, and %IntBroker_Compress_Reset.

See .Understanding Message Classes

You can use the PeopleCode Message object to access IBRequest and IBResponse IBInfo data.

The following example demonstrates reading target connector information on a notification method for a rowset-based asynchronous message.

method OnNotify
   /+ &_MSG as Message +/
   /+ Extends/implements PS_PT:Integration:INotificationHandler.OnNotify +/
   /* Variable Declaration */

   integer &i;
   string &strReturn; 
   rowset &RS;
   
   For &i = 1 To &MSG.IBInfo.IBConnectorInfo.GetNumberOfConnectorProperties()
   /* get Query arguments */ 
   
      &strReturn = &MSG.IBInfo.IBConnectorInfo.GetQueryStringArgName(&i);
      &strReturn = &MSG.IBInfo.IBConnectorInfo.GetQueryStringArgValue(&i);
      
   End-For;
   
   /* access the content data */

&RS = &MSG.GetRowset();
  
end-method;

The following example demonstrates reading target connector information on notification method for a nonrowset-based asynchronous message.

method OnNotify
   /+ &_MSG as Message +/
   /+ Extends/implements PS_PT:Integration:INotificationHandler.OnNotify +/
   /* Variable Declaration */

   integer &i;

   string &&strReturn;

   xmldoc &xmldoc;
   
   For &i = 1 To &MSG.IBInfo.IBConnectorInfo.GetNumberOfConnectorProperties()
      
      &strReturn = &MSG.IBInfo.IBConnectorInfo.GetQueryStringArgName(&i);
      &strReturn = &MSG.IBInfo.IBConnectorInfo.GetQueryStringArgValue(&i);
      
   End-For;
   
   /* access the content data */

&xmldoc = &MSG.GetXmlDoc();
  
end-method;

If an HTTP header is passed with a dollar sign ($), PeopleSoft Integration Broker converts the dollar sign to an underscore (_).