├── .gitignore ├── LICENSE ├── README.md ├── scripts └── Report IIB Environment.sh └── wiki ├── IBM-Integration-Bus-Commands.md ├── IBM-Integration-Bus-Notes.md ├── IBM-Integration-Bus-SOAP-Web-Services.md └── XSD-(XML-Schema-Definition)-Notes.md /.gitignore: -------------------------------------------------------------------------------- 1 | .metadata/ 2 | *.bak 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 GoIntegration 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # IBM Integration Bus 2 | This repository contains useful IBM Integration Bus related artifacts. 3 | Please navigate to wiki for documents 4 | -------------------------------------------------------------------------------- /scripts/Report IIB Environment.sh: -------------------------------------------------------------------------------- 1 | BROKER=ESB02 2 | EXECUTION_GROUP=EG00 3 | 4 | FULL_REPOSITORY_QUEUE_MANAGER=FR01 5 | BROKER_QUEUE_MANAGER=BR01 6 | GATEWAY_QUEUE_MANAGER=GW01 7 | 8 | FULL_REPOSITORY_QUEUE_MANAGER_OTHER_SIDE=FR02 9 | BROKER_QUEUE_MANAGER_OTHER_SIDE=BR02 10 | GATEWAY_QUEUE_MANAGER_OTHER_SIDE=GW02 11 | 12 | FULL_REPOSITORY_QUEUE_MANAGER_PORT=1401 13 | BROKER_QUEUE_MANAGER_PORT=1403 14 | GATEWAY_QUEUE_MANAGER_PORT=1405 15 | 16 | FULL_REPOSITORY_QUEUE_MANAGER_OTHER_SIDE_PORT=1402 17 | BROKER_QUEUE_MANAGER_OTHER_SIDE_PORT=1404 18 | GATEWAY_QUEUE_MANAGER_OTHER_SIDE_PORT=1406 19 | 20 | CLUSTER_NAME=CL01 21 | 22 | IN_QUEUE=TEST.IN 23 | OUT_QUEUE=TEST.OUT 24 | 25 | FULL_REPOSITORY_QUEUE_MANAGER_DNS= 26 | BROKER_QUEUE_MANAGER_DNS= 27 | GATEWAY_QUEUE_MANAGER_DNS= 28 | 29 | FULL_REPOSITORY_QUEUE_MANAGER_OTHER_SIDE_DNS= 30 | BROKER_QUEUE_MANAGER_OTHER_SIDE_DNS= 31 | GATEWAY_QUEUE_MANAGER_OTHER_SIDE_DNS= 32 | 33 | 34 | @echo off 35 | 36 | echo REPORTING STARTED 37 | echo ----------------------- 38 | 39 | echo LIST OF QUEUE MANAGERS 40 | dspmq 41 | echo ----------------------- 42 | 43 | echo LIST BROKER ARTIFACTS 44 | mqsilist -r 45 | echo ----------------------- 46 | 47 | echo LIST BROKER REGISTRY 48 | mqsireportproperties %BROKER% -o BrokerRegistry -r 49 | echo ----------------------- 50 | 51 | echo LIST HTTPLISTENER REPORTABLE ENTITY NAMES 52 | mqsireportproperties %BROKER% -b httplistener -o AllReportableEntityNames -a 53 | echo ----------------------- 54 | 55 | echo LIST HTTPLISTENER PROPERTIES 56 | mqsireportproperties %BROKER% -b httplistener -o HTTPListener -a 57 | echo ----------------------- 58 | 59 | echo LIST HTTPLISTENER HTTPCONNECTOR PROPERTIES 60 | mqsireportproperties %BROKER% -b httplistener -o HTTPConnector -a 61 | echo ----------------------- 62 | 63 | echo LIST HTTPLISTENER HTTPSCONNECTOR PROPERTIES 64 | mqsireportproperties %BROKER% -b httplistener -o HTTPSConnector -a 65 | echo ----------------------- 66 | 67 | echo LIST EXECUTION GROUP HTTPCONNECTOR PROPERTIES 68 | mqsireportproperties %BROKER% -e %EXECUTION_GROUP% -o HTTPConnector -r 69 | echo ----------------------- 70 | 71 | echo LIST EXECUTION GROUP HTTPSCONNECTOR PROPERTIES 72 | mqsireportproperties %BROKER% -e %EXECUTION_GROUP% -o HTTPSConnector -r 73 | echo ----------------------- 74 | 75 | echo LIST EXECUTION GROUP JVM PROPERTIES 76 | mqsireportproperties %BROKER% -o ComIbmJVMManager -a -e %EXECUTION_GROUP% 77 | echo ----------------------- 78 | 79 | echo REPORTING COMPLETE 80 | -------------------------------------------------------------------------------- /wiki/IBM-Integration-Bus-Commands.md: -------------------------------------------------------------------------------- 1 | ###### Basic message broker commands 2 | # Start/Stop message broker 3 | mqsistop IB9NODE 4 | mqsistart IB9NODE 5 | 6 | # List deployed objects 7 | mqsilist -r 8 | 9 | # Start/Stop Execution group 10 | mqsistopmsgflow IB9NODE -e default 11 | mqsistartmsgflow IB9NODE -e default 12 | 13 | # Start/Stop Message flow 14 | mqsistopmsgflow IB9NODE -e default -m 15 | mqsistartmsgflow IB9NODE -e default -m 16 | 17 | # Deploy a BAR file 18 | mqsideploy IB9NODE -e default -a 19 | 20 | # List all message flows with execution group 21 | mqsilist -r | grep "Message flow" | awk -F\' ' { print $4" "$2 }' 22 | 23 | # Check execution group start times 24 | grep "Execution group started" /var/mqsi/mqsi/components/IB9NODE//stdout 25 | 26 | ###### Message broker logs 27 | # JVM standard out and err logs 28 | /var/mqsi/mqsi/components/IB9NODE//stdout 29 | /var/mqsi/mqsi/components/IB9NODE//stderr 30 | 31 | ###### List message broker environment 32 | # Broker registry parameters 33 | mqsireportproperties IB9NODE -o BrokerRegistry -r 34 | 35 | # Component properties (Valid component names values are httplistener, securitycache, cachemanager or webadmin) 36 | mqsireportproperties IB9NODE -b httplistener -o AllReportableEntityNames -r 37 | mqsireportproperties IB9NODE -b securitycache -o AllReportableEntityNames -r 38 | mqsireportproperties IB9NODE -b cachemanager -o AllReportableEntityNames -r 39 | mqsireportproperties IB9NODE -b webadmin -o AllReportableEntityNames -r 40 | 41 | # List all configurable services 42 | mqsireportproperties IB9NODE -c AllTypes -o AllReportableEntityNames -r 43 | 44 | # List configurable service properties (configurable service type can be ActivityLog, Aggregation, CDServer, CICSConnection, Collector, ConnectorProviders, CORBA, DataCaptureSource, DataCaptureStore, DataDestination, DecisionServiceRepository, DotNetAppDomain, EmailServer, EISProviders, FtpServer, IMSConnect, JavaClassLoader, JDBCProviders, JDEdwardsConnection, JMSProviders, MonitoringProfiles, PeopleSoftConnection, PolicySets, PolicySet Bindings, Resequence, SAPConnection, SecurityProfiles, Service Registries, SiebelConnection, SMTP, TCPIPClient, TCPIPServer, Timer, UserDefined, WXSServer) 45 | mqsireportproperties IB9NODE -c -o AllReportableEntityNames -r 46 | 47 | # All reportable entity names at execution group level 48 | mqsireportproperties IB9NODE -e default -o AllReportableEntityNames -r 49 | 50 | # Properties for entity name at execution group level 51 | mqsireportproperties IB9NODE -e default -o -r 52 | 53 | # JVM Properties 54 | mqsireportproperties IB9NODE -e default -o ComIbmJVMManager -a 55 | 56 | # Security Profile Properties 57 | mqsireportproperties IB9NODE -c SecurityProfiles -o -r 58 | 59 | # List all user defined configurable service 60 | mqsireportproperties IB9NODE -c UserDefined -o AllReportableEntityNames -r 61 | 62 | ###### Message broker security 63 | # Broker trust store file location 64 | /root/mqsi/jre16/lib/security/cacerts 65 | 66 | # List Certificates in Key Store 67 | keytool -list -v -keystore "" 68 | 69 | ###### Message broker configuration 70 | # Increase JVM heap size 71 | mqsichangeproperties IB9NODE -b agent -o ComIbmJVMManager -n jvmMaxHeapSize -v 1073741824 72 | mqsichangeproperties IB9NODE -e EG01 -o ComIbmJVMManager -n jvmMaxHeapSize -v 1073741824 73 | 74 | # Delete passwords associated with a data source 75 | mqsisetdbparms IB9NODE -n USERDB1 -d 76 | 77 | ###### Other Admin Commands 78 | # Create execution group 79 | mqsicreateexecutiongroup IB9NODE -e EG01 80 | 81 | ###### Setting up a JDBC provider for type 4 connections 82 | # List available JDBCProvider services 83 | mqsireportproperties IB9NODE -c JDBCProviders -o AllReportableEntityNames -a 84 | 85 | # View the contents of the relevant JDBCProvider service definition 86 | mqsireportproperties IB9NODE -c JDBCProviders -o -r 87 | 88 | # Create JDBCProvider 89 | mqsideleteconfigurableservice IB9NODE -c JDBCProviders -o JDBCProviderServiceName 90 | 91 | mqsicreateconfigurableservice IB9NODE -c JDBCProviders -o JDBCProviderServiceName -n connectionUrlFormat,connectionUrlFormatAttr1,description,jarsURL,portNumber,serverName,type4DatasourceClassName,type4DriverClassName -v "jdbc:oracle:thin:[user]/[password]@[serverName]:[portNumber]/[connectionUrlFormatAttr1], ,,,1521, ,oracle.jdbc.xa.client.OracleXADataSource,oracle.jdbc.OracleDriver" 92 | 93 | # Create JDBC security identity to access databse 94 | mqsisetdbparms IB9NODE -n jdbc:: -u -p 95 | 96 | # Associate security identity with JDBCProvider 97 | mqsichangeproperties IB9NODE -c JDBCProviders -o -n securityIdentity -v 98 | 99 | # Restart integration node 100 | mqsistop IB9NODE 101 | mqsistart IB9NODE 102 | 103 | ###### Operating System 104 | 105 | # OS Version 106 | oslevel -s 107 | 108 | # CPU/Memory Related Commands 109 | lparstat 110 | lparstat -i 111 | prtconf 112 | lsconf 113 | nmon 114 | vmstat -Iwt 2 30 115 | iostat -Dl 116 | vmstat -s 117 | 118 | # List details of all volume groups with lsvg on AIX 119 | lsvg 120 | lsvg -li 121 | 122 | # Operating System Logs Viewing the general system error log (AIX) 123 | errpt -a | more 124 | 125 | # Find out Process Listening on a port 126 | netstat -Aan | grep 127 | 128 | # First part of the result is socket id. Run following command with socket id 129 | rmsock tcpcb 130 | 131 | # Maximum number of processes per user AIX 132 | lsattr -El sys0 133 | 134 | # Set DB user and Password 135 | mqsisetdbparms IB9NODE -n -u -p '' 136 | mqsisetdbparms IB9NODE -n dsn::DAN -u -p '' 137 | mqsisetdbparms IB9NODE -n dsn:: -u -p '' 138 | 139 | # Set FTP credentials 140 | mqsisetdbparms IB9NODE -n sftp:: -u -p '' 141 | 142 | # Enable SSL support on the broker instance 143 | mqsichangeproperties IB9NODE -b httplistener -o HTTPListener -n enableSSLConnector -v true 144 | 145 | # Create security profile 146 | mqsicreateconfigurableservice IB9NODE -c SecurityProfiles -o -n authentication,authenticationConfig,mapping,authorization,propagation -v "LDAP",\"ldap://url:389/rdn?cn\","NONE","NONE",TRUE 147 | 148 | # Configure Message Broker to serve HTTPS requests 149 | mqsichangeproperties IB9NODE -o BrokerRegistry -n brokerKeystoreFile -v 150 | mqsichangeproperties IB9NODE -o BrokerRegistry -n brokerTruststoreFile -v 151 | mqsisetdbparms IB9NODE -n brokerTruststore::password -u temp -p changeit 152 | mqsichangeproperties IB9NODE -b httplistener -o HTTPListener -n enableSSLConnector -v true 153 | mqsichangeproperties IB9NODE -b httplistener -o HTTPSConnector -n keystoreFile -v 154 | mqsichangeproperties IB9NODE -b httplistener -o HTTPSConnector -n keystorePass -v 155 | mqsichangeproperties IB9NODE -b httplistener -o HTTPConnector -n port -v 156 | mqsichangeproperties IB9NODE -b httplistener -o HTTPSConnector -n port -v 157 | mqsichangeproperties IB9NODE -b httplistener -o HTTPSConnector -n clientAuth -v true 158 | mqsistop IB9NODE 159 | mqsistart IB9NODE 160 | mqsichangeproperties IB9NODE -e -o HTTPSConnector -n sslProtocol -v TLS 161 | mqsichangeproperties IB9NODE -e -o HTTPSConnector -n explicitlySetPortNumber -v 162 | mqsichangeproperties IB9NODE -e -o HTTPSConnector -n clientAuth -v true 163 | mqsichangeproperties IB9NODE -e -o HTTPSConnector -n keystoreFile -v 164 | mqsichangeproperties IB9NODE -e -o HTTPSConnector -n keystoreType -v JKS 165 | mqsichangeproperties IB9NODE -e -o HTTPSConnector -n keystorePass -v 166 | mqsichangeproperties IB9NODE -e -o ComIbmJVMManager -n keystoreFile -v 167 | mqsichangeproperties IB9NODE -e -o ComIbmJVMManager -n keystoreType -v JKS 168 | mqsichangeproperties IB9NODE -e -o ComIbmJVMManager -n keystorePass -v brokerKeystore::password 169 | mqsichangeproperties IB9NODE -e -o ComIbmJVMManager -n truststoreFile -v 170 | mqsichangeproperties IB9NODE -e -o ComIbmJVMManager -n truststoreType -v JKS 171 | mqsichangeproperties IB9NODE -e -o ComIbmJVMManager -n truststorePass -v brokerTruststore::password 172 | mqsireportproperties IB9NODE -e -o HTTPSConnector -r 173 | 174 | ###### Switch between Broker Wide Listener and Embedded Listener 175 | mqsichangeproperties MB8BROKER -e exgroup1 -o ExecutionGroup -n httpNodesUseEmbeddedListener -v false 176 | mqsichangeproperties MB8BROKER -e exgroup1 -o ExecutionGroup -n soapNodesUseEmbeddedListener -v false 177 | 178 | ###### SSL related commands 179 | # Generate Private Key and Key Store 180 | keytool -genkey -alias -keyalg RSA -keystore "/root/mqsi/jre16/lib/security/" -keysize 2048 181 | 182 | # Generate CSR 183 | keytool -certreq -alias -keystore "/root/mqsi/jre16/lib/security/cacerts" -file name.csr 184 | 185 | # Convert p12 format to pem format Key Store and Private key conversion from p12 to pem 186 | /root/mqsi/jre16/bin/keytool -v -importkeystore -srckeystore keystore.jks -srcalias client -destkeystore myp12file.p12 -deststoretype PKCS12 187 | openssl pkcs12 -in .p12 -out .pem 188 | 189 | # Import a Certificate in Key Store 190 | /root/mqsi/jre16/bin/keytool -import -alias -file "" -keystore "/root/jre16/lib/security/cacerts" 191 | 192 | # Delete a Certificate from Key Store 193 | /root/mqsi/jre16/bin/keytool -delete -alias -keystore "/root/mqsi/jre16/lib/security/cacerts" 194 | 195 | ###### Database related commands 196 | # Catalog DB2 database on client machine 197 | CATALOG TCPIP NODE NODENAME REMOTE HOST_DNS SERVER PORT 198 | CATALOG DATABASE DBNAME AS DBALIAS AT NODE NODENAME 199 | 200 | * Add data source to connect to database from ESQL code on Windows environment. 201 | [IBM Integration Bus v9](https://www-01.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ah14442_.htm) 202 | [IBM Integration Bus v10](http://www-01.ibm.com/support/knowledgecenter/SSMKHH_10.0.0/com.ibm.etools.mft.doc/ah14442_.htm) 203 | 204 | * Auditing and Logging Using Monitoring Events In IBM Integration Bus\Message Broker 205 | 206 | 207 | * View Monitoring events Via IBM Integration Bus Web UI 208 | 209 | 210 | * Procedure to take a user or service trace of message flow at an integration server or execution group level 211 | http://www-01.ibm.com/support/docview.wss?uid=swg21177321 212 | 213 | - AIX memory usage 214 | 215 | 216 | * Backup configuration before change controls 217 | * Take backup of /root/mqsi/jplugin directory 218 | * Take backup of /var/mqsi/odbc/odbc.ini 219 | * Take backup of /root/mqsi/jre16/lib/security/cacerts 220 | * Take backup of broker configuration (mqsibackupbroker) 221 | 222 | 223 | -------------------------------------------------------------------------------- /wiki/IBM-Integration-Bus-Notes.md: -------------------------------------------------------------------------------- 1 | ## Message broker general notes 2 | - Elements of message broker the logical message tree are 3 | 1. **Message** 4 | 2. **LocalEnvironment** - Available within same request. Life is same as life of request. 5 | 3. **Environment** - Available within thread. Life is same as life of thread. 6 | 4. **ExceptionList** 7 | * Default message domain for all input nodes is BLOB. 8 | * InputRoot.*[] is array of all children of InputRoot. 9 | 10 | ## Message broker node properties 11 | ### HTTP Input node 12 | * **Advanced -> Set destination list** (Selected by default) 13 | Used with RouteToLable and Route node to create different flow paths based on HTTP method. 14 | Use this option to implement REST web service. 15 | * **Advanced -> Label to prefix** 16 | With this option labels become Prefix\_GET, Prefix\_POST etc. 17 | Use this option to avoid ambiguous label names. 18 | * **Advanced -> Parse query string** 19 | Query string parameters available in LocalEnvironment.HTTP.Input.QueryString. 20 | * **Parser Options -> Parse timing** (On demand by default) 21 | 1. On Demand 22 | 2. Immediate 23 | 3. Complete 24 | - **Parser Options -> Build tree using XML schema data types** 25 | Used to have data types in tree based on Message Set Definitions. 26 | * **Error Handling -> Maximum client wait time (sec)** 27 | Reply should go within this interval otherwise it will send an error. 28 | * **Validation -> Validate** (None by default) 29 | 1. None 30 | 2. Content and Value 31 | 3. Content 32 | Note: Even if Content is selected, the SOAP, DFDL, and XMLNSC domains always perform Content and Value validation. 33 | ### Compute node 34 | * **Compute mode** 35 | 1. Message 36 | The message contains the modified OutputRoot tree, the original InputLocalEnvironment tree, and the original InputExceptionList tree. 37 | 1. LocalEnvironment 38 | The message contains the original InputRoot tree, the modified OutputLocalEnvironment tree, and the original InputExceptionList tree. 39 | 40 | ## ESQL general notes 41 | * ESQL can be used in following built in nodes 42 | * Primary nodes 43 | * Compute node 44 | * Database node 45 | * Filter node 46 | * Secondary Nodes 47 | * DataDelete node 48 | * DataInsert node 49 | * DataUpdate node 50 | * Extract node 51 | * Mapping node 52 | * Warehouse node 53 | * ESQL data type categories and data types 54 | * Boolean 55 | * Datetime 56 | * Null 57 | * Numeric 58 | * Reference 59 | * String 60 | * ESQL Variables 61 | * To define variable and optionally assign initial value use DECLARE statement. 62 | * If no initial value is mentioned then scalar variables are initialized to NULL and ROW variables are initialized to empty state. 63 | * Change value of variable using SET statement. 64 | * Variable names are case sensitive. 65 | * Types of variables 66 | * External Variables 67 | * Also known as user defined properties. 68 | * Defined with EXTERNAL keyword. 69 | * Exist for entire lifetime of a message flow. 70 | * Visible to all messages passing through message flow. 71 | * Value can be changed at design time using flow editor or at deployment time using BAR editor or at run time using Change Manager Proxy (CMP) 72 | * Normal variables 73 | * Normal variables are visible to only one message. 74 | * Defined by omitting EXTERNAL and SHARED keyword. 75 | * Shared variables 76 | * Used to implement in-memory cache. 77 | * Visible to multiple messages passing through a flow. 78 | * Initialized when first message passes through node. 79 | * User defined properties 80 | * User defined properties can be accessed using EXTERNAL keyword on declare statement. 81 | * Broker Properties 82 | * Properties related to Broker, Execution Group, Nodes, etc. 83 | * ESQL Field References 84 | * Use REFERENCE pointer to set up dynamic pointer to a field in message. 85 | * ESQL Functions 86 | * defined by CREATE FUNCTION statement. 87 | * Can return a value. 88 | * ESQL PROCEDURES 89 | * PROCEDURE has no return value. 90 | * PROCEDURE name is case insensitive. 91 | * External database procedure is indicated by keyword EXTERNAL and external PROCEDURE name. 92 | * Overloaded database procedures are not supported. 93 | * ESQL Modules 94 | * Begins with CREATE node_type MODULE statement. node_type must be one of COMPUTE, DATABASE, FILTER. 95 | * Entry point is FUNCTION MAIN 96 | * ESQL Usage with different nodes 97 | * Compute node 98 | * Update/Insert/Delete data in database 99 | * Update environment and Local Environment Tree 100 | * Create one or more output messages 101 | * Propagate parts of message tree to output 102 | * Database node 103 | * All as above except it propagates input message as is. 104 | * Filter node 105 | * All as above except output message will be propagated to one of TRUE or FALSE terminal. 106 | -------------------------------------------------------------------------------- /wiki/IBM-Integration-Bus-SOAP-Web-Services.md: -------------------------------------------------------------------------------- 1 | There are many methods to develop a SOAP web service in Integration Bus. This page explains one of such method. -------------------------------------------------------------------------------- /wiki/XSD-(XML-Schema-Definition)-Notes.md: -------------------------------------------------------------------------------- 1 | * **xs:sequence**: specifies that the child elements must appear in a sequence. 2 | * **xs:all**: specifies that the child elements can appear in any order. 3 | * **xs:choice**: allows only one of the elements contained in the declaration to be present within the containing element. 4 | * **xs:simpleContent**: 5 | --------------------------------------------------------------------------------