# mulesoft IBM CTG Connector - Full Documentation
---
product: IBM CTG Connector
version: 2.3
---
# IBM CICS Transaction Gateway Connector
> For the full documentation index, see: https://docs.mulesoft.com/llms.txt
IBM CICS Transaction Gateway Connector Version 2.3
Anypoint Connector for IBM CICS Transaction Gateway (IBM CTG Connector) provides integration with
back-end CICS apps using the CICS Transaction Gateway. For Java platforms, CTG implements the Java
Cryptography Architecture (JCA) resource adapter to connect Java applications to the Customer
Information Control System (CICS) system. The connector serves as a link between Mule apps and the
IBM CTG.
Release Notes:
[IBM CICS Transaction Gateway Connector Release Notes](https://docs.mulesoft.com/release-notes/connector/ibm-ctg-connector-release-notes-mule-4)
Exchange:
[IBM CICS Transaction Gateway Connector](https://www.mulesoft.com/exchange/com.mulesoft.connectors/mule-ibm-ctg-connector/)
## Before You Begin
To use this information, you must be familiar with IBM CTG, Mule runtime engine (Mule), Anypoint
Connectors, Anypoint Studio, Mule concepts, elements in a Mule flow, and Global Elements.
You need login credentials to test your connection to your target resource.
To use this connector with Apache Maven, view the pom.xml file dependency information from the
**Dependency Snippets** link in
[Anypoint Exchange](https://www.mulesoft.com/exchange/com.mulesoft.connectors/mule-ibm-ctg-connector/).
## Terminology
CICS (Customer Information Control System)
Set of enterprise application servers with support for high-transaction workloads in a secure,
scalable, cost efficient environment. CICS applications are written in a variety of languages, from
Java to COBOL.
CICS Region
Named collection of resources that are controlled by CICS as a unit. A CICS resource is any facility
or component of a CICS system that is required to perform a task.
CICS TG (CICS Transaction Gateway)
Set of client and server software components that allow a remote client application to invoke
services in a CICS region. The client application can be either a Java application or a non-Java
application. The CICS TG is available through the following two products: CICS TG on z/OS and CICS
TG for Multiplatforms.
COMMAREA
Block of contiguous memory used to pass data between programs. It is the binary equivalent of a
COBOL structure and it is character-based.
ECI (External Call Interface)
Simple remote procedural call style interface, used for linking to CICS applications. The COMMAREA
or channel is the data interface used for the exchange of data between the client application and
the CICS.
JCA
Standard architecture for connecting the J2EE platform to heterogeneous Enterprise Information
Systems (EIS), such as CICS. The JCA enables an EIS vendor to provide a standard resource adapter
for its EIS. A resource adapter is the middle tier between a Java application and an EIS and
connects the Java application to the EIS.
## Add the Connector to a Studio Project
Anypoint Studio provides two ways to add the connector to your Studio project: from the Exchange
button in the Studio taskbar or from the Mule Palette view.
### Add the Connector Using Exchange
1. In Studio, create a Mule project.
2. Click the Exchange icon **(X)** in the upper-left of the Studio task bar.
3. In Exchange, click **Login** and supply your Anypoint Platform username and password.
4. In Exchange, search for "ctg".
5. Select the connector and click **Add to project**.
6. Follow the prompts to install the connector.
### Add the Connector in Studio
1. In Studio, create a Mule project.
2. In the Mule Palette view, click **(X) Search in Exchange**.
3. In **Add Modules to Project**, type "ctg" in the search field.
4. Click this connector’s name in **Available modules**.
5. Click **Add**.
6. Click **Finish**.
## Configure a Studio Project
1. Drag a connector’s operation to the Studio canvas.
2. Configure the Global Element for the connector:

| Field | Description |
|---|
Required Libraries | ctgserver.jar (CTG Server Library) cicsjee.jar (CICS JEE) ccf2.jar (CICS Common Connector Framework) ctgclient.jar (CTG Client Library) geronimo-j2ee-connector_1.6_spec.jar
Note: Use the JAR files that come bundled within the installation of the CTG server instead of downloading the SDK ZIP from IBM’s web site to ensure the compatibility between the connector and the CTG system. |
Host | Enter the host name of the CICS TG. |
Port | Enter the port on which the CICS TG is running. Default value is 2006. |
Server name | Enter the name of the target CICS server as defined in the CICS TG configuration file. Optional. |
Username | Enter the CICS user ID. Optional, if security is not enabled in the CICS region. |
Password | Enter the password for the CICS user ID. Optional, if security is not enabled in the CICS region. |
3. To add the dependencies, select **Add dependency** and complete the fields.

4. Go to the **Additional Settings** tab and complete the configuration:

| Field | Description |
|---|
Keystore location | Enter the location of the keystore containing the certificates required for an SSL client. Optional. |
Keystore Password | Enter the password required to access the keystore for an SSL client. Optional. |
Connection Timeout | Enter the socket timeout for the client to CTG. Default value is 0 (no timeout). |
Response Timeout | Enter the response timeout for the client to CTG. Default value is 30000 milliseconds (30 seconds). † |
CTG Trace | If set to True, enables all debug levels of CTG tracing. Default value is False. |
**†** **Response Timeout** is overridden by the `ecitimeout` parameter if configured on the
server side. See [IBM ECI Timeout](https://www.ibm.com/docs/en/cics-tg-multi/9.0.0).
5. Choose the operation.

The IBM CTG connector supports the following two outbound operations:
| Name | Description |
|---|
Execute | Invokes a CICS program with data encapsulated as channels and containers. |
Execute using COMMAREA | Invokes a CICS program with data encapsulated as a COMMAREA. Requests are limited to a maximum of 32 KB. |
## POM File Information
```xml
com.mulesoft.connectors
mule-ibm-ctg-connector
x.x.x
mule-plugin
```
Replace `x.x.x` with the version that corresponds to the connector you are using.
To obtain the most up-to-date `pom.xml` file information, access the connector in
[Anypoint Exchange](https://www.mulesoft.com/exchange/) and click **Dependency Snippets**.
## Enable Logging for Requests and Responses
To enable logging of the interactions of the connector with IBM CTG, a logger must be configured in
the log4j2.xml file of the Mule app as follows. Put the AsyncLogger statement in the `Loggers` block
in the log4j2.xml file:
```xml
```
## Common Use Cases
- Invoke a COMMAREA program
- Invoke a channel program
- Invoke a COMMAREA or channel program inside a Transactional Scope
- Add custom metadata
> [!NOTE] To successfully run the first three use cases, the target CICS system must have the
> specified programs.
## See Also
- IBM’s
[Developing Java applications for CICS](https://www.ibm.com/docs/en/cics-ts/5.3.0?topic=applications-developing-java-cics)
- High-level tutorial of JCA in
[Introduction to the J2EE Connector Architecture](https://developer.ibm.com/languages/java/)
- [Redbooks for the IBM Mainframe](https://www.redbooks.ibm.com/domains/zsoftware)
- [Create Metadata](https://docs.mulesoft.com/studio/create-metadata-class-task)
- [IBM ECI Timeout](https://www.ibm.com/docs/en/cics-tg-multi/9.0.0)
- [Salesforce Help](https://help.salesforce.com)
---
product: IBM CTG Connector
version: 3.0
is-latest-version: true
---
# IBM CICS Transaction Gateway Connector 3.0
> For the full documentation index, see: https://docs.mulesoft.com/llms.txt
Anypoint Connector for IBM CICS Transaction Gateway (IBM CTG Connector) provides integration with
back-end CICS apps using the CICS Transaction Gateway. For Java platforms, CTG implements the Java
Cryptography Architecture (JCA) resource adapter to connect Java applications to the Customer
Information Control System (CICS) system. The connector serves as a link between Mule apps and the
IBM CTG.
Release Notes:
[IBM CICS Transaction Gateway Connector Release Notes](https://docs.mulesoft.com/release-notes/connector/ibm-ctg-connector-release-notes-mule-4)
Exchange:
[IBM CICS Transaction Gateway Connector](https://www.mulesoft.com/exchange/com.mulesoft.connectors/mule-ibm-ctg-connector/)
## Before You Begin
To use this information, you must be familiar with IBM CTG, Mule runtime engine (Mule), Anypoint
Connectors, Anypoint Studio, Mule concepts, elements in a Mule flow, and Global Elements.
You need login credentials to test your connection to your target resource.
To use this connector with Apache Maven, view the pom.xml file dependency information from the
**Dependency Snippets** link in
[Anypoint Exchange](https://www.mulesoft.com/exchange/com.mulesoft.connectors/mule-ibm-ctg-connector/).
## Terminology
CICS (Customer Information Control System)
Set of enterprise application servers with support for high-transaction workloads in a secure,
scalable, cost efficient environment. CICS applications are written in a variety of languages, from
Java to COBOL.
CICS Region
Named collection of resources that are controlled by CICS as a unit. A CICS resource is any facility
or component of a CICS system that is required to perform a task.
CICS TG (CICS Transaction Gateway)
Set of client and server software components that allow a remote client application to invoke
services in a CICS region. The client application can be either a Java application or a non-Java
application. The CICS TG is available through the following two products: CICS TG on z/OS and CICS
TG for Multiplatforms.
COMMAREA
Block of contiguous memory used to pass data between programs. It is the binary equivalent of a
COBOL structure and it is character-based.
ECI (External Call Interface)
Simple remote procedural call style interface, used for linking to CICS applications. The COMMAREA
or channel is the data interface used for the exchange of data between the client application and
the CICS.
JCA
Standard architecture for connecting the J2EE platform to heterogeneous Enterprise Information
Systems (EIS), such as CICS. The JCA enables an EIS vendor to provide a standard resource adapter
for its EIS. A resource adapter is the middle tier between a Java application and an EIS and
connects the Java application to the EIS.
## Add the Connector to a Studio Project
Anypoint Studio provides two ways to add the connector to your Studio project: from the Exchange
button in the Studio taskbar or from the Mule Palette view.
### Add the Connector Using Exchange
1. In Studio, create a Mule project.
2. Click the Exchange icon **(X)** in the upper-left of the Studio task bar.
3. In Exchange, click **Login** and supply your Anypoint Platform username and password.
4. In Exchange, search for "ctg".
5. Select the connector and click **Add to project**.
6. Follow the prompts to install the connector.
### Add the Connector in Studio
1. In Studio, create a Mule project.
2. In the Mule Palette view, click **(X) Search in Exchange**.
3. In **Add Modules to Project**, type "ctg" in the search field.
4. Click this connector’s name in **Available modules**.
5. Click **Add**.
6. Click **Finish**.
## Configure a Studio Project
1. Drag a connector’s operation to the Studio canvas.
2. Configure the Global Element for the connector:

| Field | Description |
|---|
Required Libraries | ctgserver.jar (CTG Server Library) cicsjee.jar (CICS JEE) ccf2.jar (CICS Common Connector Framework) ctgclient.jar (CTG Client Library) geronimo-j2ee-connector_1.6_spec.jar
Note: Use the JAR files that come bundled within the installation of the CTG server instead of downloading the SDK ZIP from IBM’s web site to ensure the compatibility between the connector and the CTG system. |
Host | Enter the host name of the CICS TG. |
Port | Enter the port on which the CICS TG is running. Default value is 2006. |
Server name | Enter the name of the target CICS server as defined in the CICS TG configuration file. Optional. |
Username | Enter the CICS user ID. Optional, if security is not enabled in the CICS region. |
Password | Enter the password for the CICS user ID. Optional, if security is not enabled in the CICS region. |
3. To add the dependencies, select **Add dependency** and complete the fields.

4. Go to the **Additional Settings** tab and complete the configuration:

| Field | Description |
|---|
Keystore location | Enter the location of the keystore containing the certificates required for an SSL client. Optional. |
Keystore Password | Enter the password required to access the keystore for an SSL client. Optional. |
Connection Timeout | Enter the socket timeout for the client to CTG. Default value is 0 (no timeout). |
Response Timeout | Enter the response timeout for the client to CTG. Default value is 30000 milliseconds (30 seconds). † |
CTG Trace | If set to True, enables all debug levels of CTG tracing. Default value is False. |
**†** **Response Timeout** is overridden by the `ecitimeout` parameter if configured on the
server side. See [IBM ECI Timeout](https://www.ibm.com/docs/en/cics-tg-multi/9.0.0).
5. Choose the operation.

The IBM CTG connector supports the following two outbound operations:
| Name | Description |
|---|
Execute | Invokes a CICS program with data encapsulated as channels and containers. |
Execute using COMMAREA | Invokes a CICS program with data encapsulated as a COMMAREA. Requests are limited to a maximum of 32 KB. |
## POM File Information
```xml
com.mulesoft.connectors
mule-ibm-ctg-connector
x.x.x
mule-plugin
```
Replace `x.x.x` with the version that corresponds to the connector you are using.
To obtain the most up-to-date `pom.xml` file information, access the connector in
[Anypoint Exchange](https://www.mulesoft.com/exchange/) and click **Dependency Snippets**.
## Enable Logging for Requests and Responses
To enable logging of the interactions of the connector with IBM CTG, a logger must be configured in
the log4j2.xml file of the Mule app as follows. Put the AsyncLogger statement in the `Loggers` block
in the log4j2.xml file:
```xml
```
## Common Use Cases
- Invoke a COMMAREA program
- Invoke a channel program
- Invoke a COMMAREA or channel program inside a Transactional Scope
- Add custom metadata
> [!NOTE] To successfully run the first three use cases, the target CICS system must have the
> specified programs.
## See Also
- IBM’s
[Developing Java applications for CICS](https://www.ibm.com/docs/en/cics-ts/5.3.0?topic=applications-developing-java-cics)
- High-level tutorial of JCA in
[Introduction to the J2EE Connector Architecture](https://developer.ibm.com/languages/java/)
- [Redbooks for the IBM Mainframe](https://www.redbooks.ibm.com/domains/zsoftware)
- [Create Metadata](https://docs.mulesoft.com/studio/create-metadata-class-task)
- [IBM ECI Timeout](https://www.ibm.com/docs/en/cics-tg-multi/9.0.0)
- [Salesforce Help](https://help.salesforce.com)
---
product: IBM CTG Connector
version: 2.3
---
# IBM CTG Connector 2.3 Examples
> For the full documentation index, see: https://docs.mulesoft.com/llms.txt
The following examples show several Mule flows for IBM CTG Connector:
- [Invoke a COMMAREA Program](#invoke-a-commarea-program)
- [Invoke a Channel Program](#invoke-a-channel-program)
- [Invoke a COMMAREA or Channel Program Inside a Transactional Scope](#invoke-a-commarea-or-channel-program-inside-a-transactional-scope)
- [Use Multiple Containers](#use-multiple-containers)
## Configure a Connection
To secure connections, you must specify the connection field values. To do this:
- [Create a configuration file for a connection.](#create-config-file)
- [Configure the connection global elements.](#configure-conn)
- [Configure a global element for the properties file.](#configure-global)
### Create a Configuration File for a Connection
Create a configuration file that includes properties for a connection:
1. Create a file named `mule-app.properties` in the `/src/main/resources/` folder.
2. In the `mule-app.properties` file, create a set of properties for the connection, similar to the
ones that follow, replacing the bracketed text (including the brackets) with the correct values
for your configuration:
ibm.host= ibm.port= ibm.serverName= ibm.username=
(optional) ibm.password= (optional)
ibm.keystoreLocation=
(optional) ibm.keystorePassword=
(optional)
This may vary depending on the selected connection configuration.
For more information about creating a properties file, refer to
[Configuring Property Placeholders](https://docs.mulesoft.com/mule-runtime/latest/mule-app-properties-to-configure).
### Configure the Connection Global Elements
Configure global elements for connection:
1. Create a new Mule project.
2. In the **Mule Palette** view, click **Search in Exchange** and enter `ibm ctg`.
3. Add **IBM CICS Transaction Gateway Connector** to the **Selected modules** section and click
**Finish**.
4. Click the **Global Elements** tab and click **Create**.
5. Select **Connector Configuration > IBM CTG Config** and click **OK**.
6. Enter the values to configure **Connection**.
7. Click the **Test Connection** button to ensure there is connectivity with the IBM CTG API. A
successful message should pop up.
8. Click **OK**.
### Configure a Global Element for the Properties File
Configure a global element for the `mule-app.properties` file so that Mule knows where to find it:
1. Click the **Global Elements** tab and click **Create**.
2. In the **Choose Global Type** dialog, select **Configuration properties** and click **OK**.
3. In the **File** field, enter `mule.app.properties`.
4. Click **OK**.
## Invoke a COMMAREA Program
This application calls EC01, a COMMAREA-based program that outputs the current datetime in a
formatted EBCDIC string.

1. Create a new Mule Project in Anypoint Studio and fill in the IBM CTG credentials in
`src/main/resources/mule-app.properties`.
```text
ctg.host=
ctg.port=
ctg.serverName=
ctg.username=
ctg.password=
```
2. Drag an HTTP Listener operation onto the canvas, leave the default values for Host and Port, and
set the Path to `/test/ec01`.
3. Drag an IBM CTG operation onto the canvas and add a new Global Element to configure a standard
(non-SSL) client.
| Parameter | Value |
|---|
Host | |
Port | |
Server Name | |
Username | |
Password | |
> [!NOTE] Click **Test Connection** to confirm that Mule can connect with the IBM CTG instance.
> If the client is successful, click OK to save the configuration. Otherwise, review or correct
> any invalid parameters and test again.
4. Double-click the IBM CTG component, select the **Execute** operation and configure the following
parameters:
| Parameter | Value |
|---|
Content Reference | |
Request Reference | #[flowVars.commareaRequest]
|
5. Add a Transform Message between the HTTP and the IBM CTG operation.
The connector does not provide dynamic or static metadata, but allows users to define custom
types using the Metadata Type tool.
1. Define the input metadata for Add Custom Metadata using the ec01-type.ffd schema file:
```dataweave
form: COPYBOOK
id: 'DFHCOMMAREA'
values:
- { name: 'LK-DATE-OUT', type: String, length: 8 }
- { name: 'LK-SPACE-OUT', type: String, length: 1 }
- { name: 'LK-TIME-OUT', type: String, length: 8 }
- { name: 'LK-LOWVAL-OUT', type: String, length: 1 }
```
2. Map the fields in the DataWeave transformer.
```dataweave
%dw 2.0
output text/plain schemaPath = "ec01-type.ffd", segmentIdent = "DFHCOMMAREA"
---
[{
LK-DATE-OUT: "",
LK-SPACE-OUT: "",
LK-TIME-OUT: "",
LK-LOWVAL-OUT: ""
}]
```
3. Create a flow variable named `commareaRequest` and configure the following fields, as
described in [Load Java Metadata](#loadjavametadata):
```dataweave
%dw 2.0
output application/java
---
{
channel: "EC03",
encoding: "US-ASCII",
errorContainer: "OUTPUTMESSAGE",
programName: "EC03",
requestContainer: "INPUTDATA",
responseContainer: "CICSDATETIME",
tpnName: "CSMI"
} as Object {
class : "org.mule.modules.ibmctg.internal.model.ChannelRequest"
}
```
See [Load Java Metadata](#loadjavametadata) for how to obtain metadata for the
CommareaRequest.
6. Add a Transform Message after the IBM CTG to extract the results in a JSON format.
```dataweave
%dw 2.0
output application/json
---
{
date: payload
}
```
7. Add a Logger at the end of the flow.
8. Save the changes and deploy the Mule Application. Open a browser and make a request to
`http://localhost:8081/ec01`. The result should be similar to:
```json
{
"date": "08/01/2019 13:41:17"
}
```
### XML for This Example
Paste this code into the Studio XML editor to quickly load the flow for this example into your Mule
app:
```xml
```
## Invoke a Channel Program
This application calls EC03, a channel-based program that takes an input data container and returns
three containers:
- A data and time container
- The length of the input data, use channels, and containers in a CICS program
- An output container that contains a copy of the input data, or an error message

1. Perform steps 1 to 3 from the previous example and set the HTTP path to `/ec03`.
2. Double-click the IBM CTG operation, select the Execute operation, and configure the following
parameters:
| Parameter | Value |
|---|
Content Reference | |
Request Reference | |
3. Add a Transform Message between the HTTP and the IBM CTG operation.
4. Define the input metadata according to [Add Custom Metadata](#addcustommetadata) using the
schema file ec03-type.ffd:
```dataweave
form: COPYBOOK
id: 'DFHCOMMAREA'
values:
- { name: 'CICS-DATE-TM', type: String, length: 8 }
```
5. Map the fields in the DataWeave transformer.
```dataweave
%dw 2.0
output text/plain schemaPath = "ec03-type.ffd", segmentIdent = "DFHCOMMAREA"
---
[{
CICS-DATE-TM: ""
}]
```
6. Create a flowVar variable named `request` and configure the following fields, as described in
[Load Java Metadata](#loadjavametadata):
```dataweave
%dw 2.0
output application/java
---
{
channel: "EC03",
encoding: "US-ASCII",
errorContainer: "OUTPUTMESSAGE",
programName: "EC03",
requestContainer: "INPUTDATA",
responseContainer: "CICSDATETIME",
tpnName: "CSMI"
} as Object {
class : "org.mule.modules.ibmctg.internal.model.ChannelRequest"
}
```
7. Add a Transform Messager after the IBM CTG operation to convert the result into a readable
format.
8. Add a Logger at the end of the flow.
9. Save the changes and deploy the Mule app.
10. Open a browser and make a request to `http://localhost:8081/ec03`.
The result should be similar to:
```json
{
cics-date-time: "08/01/2019 13:57:25"
}
```
### Add Custom Metadata
The IBM CTG Connector does not provide dynamic or static metadata out of the box, but it enables
users to define custom types using the Metadata Type tool. Define input and output metadata as
follows:
1. Place a schema file under `src/main/resources` directory, normally in `.ffd` format.
Note: These schema files must be supplied by the user. They can be obtained from COBOL
copybooks, which are included in the CICS installation.
2. Go to the Metadata tab of the connector operation and click **Add metadata**.
- Select Input:Payload and click **Edit** to open the Metadata Editor:

3. Click **Add** to create a new type and provide and ID for it, that is, ec03-in-type for the
program EC03 input data.
4. Select type Copybook, select Schema, and provide the location of the schema file.
5. From the list of available data segments drop-down menu that appears, choose the one you need
and click **Select** to save the configuration.
6. Drag a DataWeave transformer in front of the IBM CTG component in the flow.
Metadata fields become available to build the mapping.

Having a metadata definition is not required to use IBM CTG Connector, but it is essential to
improve the usability of the connector. See
[Create Metadata](https://docs.mulesoft.com/studio/create-metadata-class-task).
#### Load Java Metadata
In DataWeave, click **Define Metadata** to open the Metadata window.
1. Click **Add** and provide an ID, such as `CommareaRequest`.
2. Select type Java and then select a Java object in the Data Structure table.
3. Search the class CommareaRequest or the fully qualified name
`org.mule.modules.ibmctg.internal.model.CommareaRequest`, and click **OK**.
4. Click **Select** to save the configuration.
5. Perform the same steps to load metadata for the ChannelRequest type.
### XML for This Example
Paste this code into the Studio XML editor to quickly load the flow for this example into your Mule
app:
```xml
```
## Invoke a COMMAREA or Channel Program Inside a Transactional Scope
This application calls EC02, a COMMAREA-based program that returns a simple run counter.

1. Perform steps 1 to 3 from the previous example and set the HTTP path to `/test/ec02`.
2. In the Global Elements tab, add a new Bitronix Transaction Manager without further
configurations.
3. Drag a Transactional element next to the HTTP and configure according to the table below:
| Parameter | Value |
|---|
Type | XA Transaction
|
Action | BEGIN_OR_JOIN
|
4. Double-click the IBM CTG component, select the operation Execute using COMMAREA and configure
the following parameters:
| Parameter | Value |
|---|
Content Reference | #[payload]
|
Request Reference | #[flowVars.request]
|
5. Add a Transform Message between the HTTP and the IBM CTG components. The connector does not
provide dynamic/static metadata but allows users to define custom types using the Metadata Type
tool.
6. Define the input metadata according to [Add Custom Metadata](#addcustommetadata) using the
schema file ec02-type.ffd:
```dataweave
form: COPYBOOK
id: 'DFHCOMMAREA'
values:
- { name: 'LK-COUNT', type: String, length: 40 }
```
7. Map the fields in the DataWeave transformer.
```dataweave
%dw 2.0
%output text/plain schemaPath = "ec02-type.ffd" , segmentIdent = "DFHCOMMAREA"
---
[{
LK-COUNT: "000001234TH RUN OF EC02"
}]
```
8. Create a flowVar named `request` and configure the following fields, as described in
[Load Java Metadata](#loadjavametadata):
```dataweave
%dw 2.0
output application/java
---
{
commareaLength: 40,
encoding: "IBM037",
programName: "EC02",
replyLength: 40,
tpnName: "CSMI"
} as Object {
class : "org.mule.modules.ibmctg.internal.model.CommareaRequest"
}
```
9. Add a Transform Message after the IBM CTG to extract the results in a JSON format.
```dataweave
%dw 2.0
output application/json
---
{
count: payload
}
```
10. Add a Logger at the end of the flow.
11. Save the changes and deploy the Mule app.
12. Open a browser and make a request to `http://localhost:8081/ec02`. The result should be similar
to:
```json
{
"count": "1st RUN OF EC02"
}
```
### XML for This Example
Paste this code into the Studio XML editor to quickly load the flow for this example into your Mule
app:
```xml
```
## Use Multiple Containers
This Mule flow shows how to use multiple containers. This example uses the following operations:
- **HTTP Listener**
Accepts data from HTTP requests
- **Transform Message**
Sets the first content request and outputs the data as a flat file
%dw 2.0 output application/flatfile schemaPath = "ec03-type.ffd", segmentIdent = "DFHCOMMAREA",
encoding="cp037"
---
\[{ "CICS-DATE-TM": "" }\]
- **Transform Message**
Sets the second content request and outputs the data as a flat file
%dw 2.0 output application/flatfile schemaPath = "ec03-type.ffd", segmentIdent = "DFHCOMMAREA",
encoding="cp037"
---
\[{ "CICS-DATE-TM": "" }\]
- **Transform Message**
Sets multiple channels and content requests and outputs the data in JSON
%dw 2.0 output application/json
---
\[ { channelRequest : { channel: "EC03", encoding: "US-ASCII", errorContainer: "OUTPUTMESSAGE",
programName: "EC03", requestContainer: "INPUTDATA", responseContainer: "CICSDATETIME", tpnName:
"CSMI" }, content : vars.request1.^raw }, { channelRequest : { channel: "EC03", encoding:
"US-ASCII", errorContainer: "OUTPUTMESSAGE", programName: "EC03", requestContainer: "INPUTDATA",
responseContainer: "CICSDATETIME", tpnName: "CSMI" }, content : vars.request2.^raw } \]
- **Execute with multiple channels**
Calls a remote CICS program sending data encapsulated in channels and containers, enabling users
to transfer more than 32 KB in a single request
Enter the following values:
| Field | Value |
|---|
Object type | |
Connector Configuration | |
Channel and contents | |
- **Transform Message**
Outputs the data in JSON
%dw 2.0 output application/json
---
{ "cics-date-time":payload }
- **Logger**
Performs logging

### XML for This Example
Paste this code into the Studio XML editor to quickly load the flow for this example into your Mule
app:
```xml
```
## See Also
- [Introduction to Anypoint Connectors](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors)
- [Salesforce Help](https://help.salesforce.com)
---
product: IBM CTG Connector
version: 3.0
is-latest-version: true
---
# IBM CTG Connector 3.0 Examples
> For the full documentation index, see: https://docs.mulesoft.com/llms.txt
The following examples show several Mule flows for IBM CTG Connector:
- [Invoke a COMMAREA Program](#invoke-a-commarea-program)
- [Invoke a Channel Program](#invoke-a-channel-program)
- [Invoke a COMMAREA or Channel Program Inside a Transactional Scope](#invoke-a-commarea-or-channel-program-inside-a-transactional-scope)
- [Use Multiple Containers](#use-multiple-containers)
## Configure a Connection
To secure connections, you must specify the connection field values. To do this:
- [Create a configuration file for a connection.](#create-config-file)
- [Configure the connection global elements.](#configure-conn)
- [Configure a global element for the properties file.](#configure-global)
### Create a Configuration File for a Connection
Create a configuration file that includes properties for a connection:
1. Create a file named `mule-app.properties` in the `/src/main/resources/` folder.
2. In the `mule-app.properties` file, create a set of properties for the connection, similar to the
ones that follow, replacing the bracketed text (including the brackets) with the correct values
for your configuration:
ibm.host= ibm.port= ibm.serverName= ibm.username=
(optional) ibm.password= (optional)
ibm.keystoreLocation=
(optional) ibm.keystorePassword=
(optional)
This may vary depending on the selected connection configuration.
For more information about creating a properties file, refer to
[Configuring Property Placeholders](https://docs.mulesoft.com/mule-runtime/latest/mule-app-properties-to-configure).
### Configure the Connection Global Elements
Configure global elements for connection:
1. Create a new Mule project.
2. In the **Mule Palette** view, click **Search in Exchange** and enter `ibm ctg`.
3. Add **IBM CICS Transaction Gateway Connector** to the **Selected modules** section and click
**Finish**.
4. Click the **Global Elements** tab and click **Create**.
5. Select **Connector Configuration > IBM CTG Config** and click **OK**.
6. Enter the values to configure **Connection**.
7. Click the **Test Connection** button to ensure there is connectivity with the IBM CTG API. A
successful message should pop up.
8. Click **OK**.
### Configure a Global Element for the Properties File
Configure a global element for the `mule-app.properties` file so that Mule knows where to find it:
1. Click the **Global Elements** tab and click **Create**.
2. In the **Choose Global Type** dialog, select **Configuration properties** and click **OK**.
3. In the **File** field, enter `mule.app.properties`.
4. Click **OK**.
## Invoke a COMMAREA Program
This application calls EC01, a COMMAREA-based program that outputs the current datetime in a
formatted EBCDIC string.

1. Create a new Mule Project in Anypoint Studio and fill in the IBM CTG credentials in
`src/main/resources/mule-app.properties`.
```text
ctg.host=
ctg.port=
ctg.serverName=
ctg.username=
ctg.password=
```
2. Drag an HTTP Listener operation onto the canvas, leave the default values for Host and Port, and
set the Path to `/test/ec01`.
3. Drag an IBM CTG operation onto the canvas and add a new Global Element to configure a standard
(non-SSL) client.
| Parameter | Value |
|---|
Host | |
Port | |
Server Name | |
Username | |
Password | |
> [!NOTE] Click **Test Connection** to confirm that Mule can connect with the IBM CTG instance.
> If the client is successful, click OK to save the configuration. Otherwise, review or correct
> any invalid parameters and test again.
4. Double-click the IBM CTG component, select the **Execute** operation and configure the following
parameters:
| Parameter | Value |
|---|
Content Reference | |
Request Reference | #[flowVars.commareaRequest]
|
5. Add a Transform Message between the HTTP and the IBM CTG operation.
The connector does not provide dynamic or static metadata, but allows users to define custom
types using the Metadata Type tool.
1. Define the input metadata for Add Custom Metadata using the ec01-type.ffd schema file:
```dataweave
form: COPYBOOK
id: 'DFHCOMMAREA'
values:
- { name: 'LK-DATE-OUT', type: String, length: 8 }
- { name: 'LK-SPACE-OUT', type: String, length: 1 }
- { name: 'LK-TIME-OUT', type: String, length: 8 }
- { name: 'LK-LOWVAL-OUT', type: String, length: 1 }
```
2. Map the fields in the DataWeave transformer.
```dataweave
%dw 2.0
output text/plain schemaPath = "ec01-type.ffd", segmentIdent = "DFHCOMMAREA"
---
[{
LK-DATE-OUT: "",
LK-SPACE-OUT: "",
LK-TIME-OUT: "",
LK-LOWVAL-OUT: ""
}]
```
3. Create a flow variable named `commareaRequest` and configure the following fields, as
described in [Load Java Metadata](#loadjavametadata):
```dataweave
%dw 2.0
output application/java
---
{
channel: "EC03",
encoding: "US-ASCII",
errorContainer: "OUTPUTMESSAGE",
programName: "EC03",
requestContainer: "INPUTDATA",
responseContainer: "CICSDATETIME",
tpnName: "CSMI"
} as Object {
class : "org.mule.modules.ibmctg.internal.model.ChannelRequest"
}
```
See [Load Java Metadata](#loadjavametadata) for how to obtain metadata for the
CommareaRequest.
6. Add a Transform Message after the IBM CTG to extract the results in a JSON format.
```dataweave
%dw 2.0
output application/json
---
{
date: payload
}
```
7. Add a Logger at the end of the flow.
8. Save the changes and deploy the Mule Application. Open a browser and make a request to
`http://localhost:8081/ec01`. The result should be similar to:
```json
{
"date": "08/01/2019 13:41:17"
}
```
### XML for This Example
Paste this code into the Studio XML editor to quickly load the flow for this example into your Mule
app:
```xml
```
## Invoke a Channel Program
This application calls EC03, a channel-based program that takes an input data container and returns
three containers:
- A data and time container
- The length of the input data, use channels, and containers in a CICS program
- An output container that contains a copy of the input data, or an error message

1. Perform steps 1 to 3 from the previous example and set the HTTP path to `/ec03`.
2. Double-click the IBM CTG operation, select the Execute operation, and configure the following
parameters:
| Parameter | Value |
|---|
Content Reference | |
Request Reference | |
3. Add a Transform Message between the HTTP and the IBM CTG operation.
4. Define the input metadata according to [Add Custom Metadata](#addcustommetadata) using the
schema file ec03-type.ffd:
```dataweave
form: COPYBOOK
id: 'DFHCOMMAREA'
values:
- { name: 'CICS-DATE-TM', type: String, length: 8 }
```
5. Map the fields in the DataWeave transformer.
```dataweave
%dw 2.0
output text/plain schemaPath = "ec03-type.ffd", segmentIdent = "DFHCOMMAREA"
---
[{
CICS-DATE-TM: ""
}]
```
6. Create a flowVar variable named `request` and configure the following fields, as described in
[Load Java Metadata](#loadjavametadata):
```dataweave
%dw 2.0
output application/java
---
{
channel: "EC03",
encoding: "US-ASCII",
errorContainer: "OUTPUTMESSAGE",
programName: "EC03",
requestContainer: "INPUTDATA",
responseContainer: "CICSDATETIME",
tpnName: "CSMI"
} as Object {
class : "org.mule.modules.ibmctg.internal.model.ChannelRequest"
}
```
7. Add a Transform Messager after the IBM CTG operation to convert the result into a readable
format.
8. Add a Logger at the end of the flow.
9. Save the changes and deploy the Mule app.
10. Open a browser and make a request to `http://localhost:8081/ec03`.
The result should be similar to:
```json
{
cics-date-time: "08/01/2019 13:57:25"
}
```
### Add Custom Metadata
The IBM CTG Connector does not provide dynamic or static metadata out of the box, but it enables
users to define custom types using the Metadata Type tool. Define input and output metadata as
follows:
1. Place a schema file under `src/main/resources` directory, normally in `.ffd` format.
Note: These schema files must be supplied by the user. They can be obtained from COBOL
copybooks, which are included in the CICS installation.
2. Go to the Metadata tab of the connector operation and click **Add metadata**.
- Select Input:Payload and click **Edit** to open the Metadata Editor:

3. Click **Add** to create a new type and provide and ID for it, that is, ec03-in-type for the
program EC03 input data.
4. Select type Copybook, select Schema, and provide the location of the schema file.
5. From the list of available data segments drop-down menu that appears, choose the one you need
and click **Select** to save the configuration.
6. Drag a DataWeave transformer in front of the IBM CTG component in the flow.
Metadata fields become available to build the mapping.

Having a metadata definition is not required to use IBM CTG Connector, but it is essential to
improve the usability of the connector. See
[Create Metadata](https://docs.mulesoft.com/studio/create-metadata-class-task).
#### Load Java Metadata
In DataWeave, click **Define Metadata** to open the Metadata window.
1. Click **Add** and provide an ID, such as `CommareaRequest`.
2. Select type Java and then select a Java object in the Data Structure table.
3. Search the class CommareaRequest or the fully qualified name
`org.mule.modules.ibmctg.internal.model.CommareaRequest`, and click **OK**.
4. Click **Select** to save the configuration.
5. Perform the same steps to load metadata for the ChannelRequest type.
### XML for This Example
Paste this code into the Studio XML editor to quickly load the flow for this example into your Mule
app:
```xml
```
## Invoke a COMMAREA or Channel Program Inside a Transactional Scope
This application calls EC02, a COMMAREA-based program that returns a simple run counter.

1. Perform steps 1 to 3 from the previous example and set the HTTP path to `/test/ec02`.
2. In the Global Elements tab, add a new Bitronix Transaction Manager without further
configurations.
3. Drag a Transactional element next to the HTTP and configure according to the table below:
| Parameter | Value |
|---|
Type | XA Transaction
|
Action | BEGIN_OR_JOIN
|
4. Double-click the IBM CTG component, select the operation Execute using COMMAREA and configure
the following parameters:
| Parameter | Value |
|---|
Content Reference | #[payload]
|
Request Reference | #[flowVars.request]
|
5. Add a Transform Message between the HTTP and the IBM CTG components. The connector does not
provide dynamic/static metadata but allows users to define custom types using the Metadata Type
tool.
6. Define the input metadata according to [Add Custom Metadata](#addcustommetadata) using the
schema file ec02-type.ffd:
```dataweave
form: COPYBOOK
id: 'DFHCOMMAREA'
values:
- { name: 'LK-COUNT', type: String, length: 40 }
```
7. Map the fields in the DataWeave transformer.
```dataweave
%dw 2.0
%output text/plain schemaPath = "ec02-type.ffd" , segmentIdent = "DFHCOMMAREA"
---
[{
LK-COUNT: "000001234TH RUN OF EC02"
}]
```
8. Create a flowVar named `request` and configure the following fields, as described in
[Load Java Metadata](#loadjavametadata):
```dataweave
%dw 2.0
output application/java
---
{
commareaLength: 40,
encoding: "IBM037",
programName: "EC02",
replyLength: 40,
tpnName: "CSMI"
} as Object {
class : "org.mule.modules.ibmctg.internal.model.CommareaRequest"
}
```
9. Add a Transform Message after the IBM CTG to extract the results in a JSON format.
```dataweave
%dw 2.0
output application/json
---
{
count: payload
}
```
10. Add a Logger at the end of the flow.
11. Save the changes and deploy the Mule app.
12. Open a browser and make a request to `http://localhost:8081/ec02`. The result should be similar
to:
```json
{
"count": "1st RUN OF EC02"
}
```
### XML for This Example
Paste this code into the Studio XML editor to quickly load the flow for this example into your Mule
app:
```xml
```
## Use Multiple Containers
This Mule flow shows how to use multiple containers. This example uses the following operations:
- **HTTP Listener**
Accepts data from HTTP requests
- **Transform Message**
Sets the first content request and outputs the data as a flat file
%dw 2.0 output application/flatfile schemaPath = "ec03-type.ffd", segmentIdent = "DFHCOMMAREA",
encoding="cp037"
---
\[{ "CICS-DATE-TM": "" }\]
- **Transform Message**
Sets the second content request and outputs the data as a flat file
%dw 2.0 output application/flatfile schemaPath = "ec03-type.ffd", segmentIdent = "DFHCOMMAREA",
encoding="cp037"
---
\[{ "CICS-DATE-TM": "" }\]
- **Transform Message**
Sets multiple channels and content requests and outputs the data in JSON
%dw 2.0 output application/json
---
\[ { channelRequest : { channel: "EC03", encoding: "US-ASCII", errorContainer: "OUTPUTMESSAGE",
programName: "EC03", requestContainer: "INPUTDATA", responseContainer: "CICSDATETIME", tpnName:
"CSMI" }, content : vars.request1.^raw }, { channelRequest : { channel: "EC03", encoding:
"US-ASCII", errorContainer: "OUTPUTMESSAGE", programName: "EC03", requestContainer: "INPUTDATA",
responseContainer: "CICSDATETIME", tpnName: "CSMI" }, content : vars.request2.^raw } \]
- **Execute with multiple channels**
Calls a remote CICS program sending data encapsulated in channels and containers, enabling users
to transfer more than 32 KB in a single request
Enter the following values:
| Field | Value |
|---|
Object type | |
Connector Configuration | |
Channel and contents | |
- **Transform Message**
Outputs the data in JSON
%dw 2.0 output application/json
---
{ "cics-date-time":payload }
- **Logger**
Performs logging

### XML for This Example
Paste this code into the Studio XML editor to quickly load the flow for this example into your Mule
app:
```xml
```
## See Also
- [Introduction to Anypoint Connectors](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors)
- [Salesforce Help](https://help.salesforce.com)
---
product: IBM CTG Connector
version: 3.0
is-latest-version: true
---
# IBM CTG Connector 3.0 Reference
> For the full documentation index, see: https://docs.mulesoft.com/llms.txt
Anypoint Connector for IBM CICS Transaction Gateway (IBM CTG Connector) provides integration with
back-end CICS apps using the CICS Transaction Gateway.
Release Notes:
[IBM CICS Transaction Gateway Connector Release Notes](https://docs.mulesoft.com/release-notes/connector/ibm-ctg-connector-release-notes-mule-4)
## Configurations
---
### Config
#### Parameters
| Name | Type | Description | Default Value | Required |
|---|
Name | String | The name for this configuration. Connectors reference the configuration with this name. | | x |
Connection | | The connection types to provide to this configuration. | | x |
Name | | The identifier of this element used to reference it in other components. | | x |
Expiration Policy | | Configures the minimum amount of time that a dynamic configuration instance can remain idle before the runtime considers it eligible for expiration. This does not mean that the platform expires the instance at the exact moment that it becomes eligible. The runtime purges the instances when it sees fit. | | |
#### Connection Types
##### Connection
###### Parameters
| Name | Type | Description | Default Value | Required |
|---|
Host | | | localhost | |
Port | | | 2006 | |
Servers name | | | | x |
Username | | | | x |
Password | | | | x |
Keystore location | | The location of the keystore containing the certificates required for an SSL connection. | | |
Keystore Password | | The password required to access the keystore for an SSL connection. | | |
Connection Timeout | | Sets the socket connection timeout value for a connection to CICS TG. This timeout represents the maximum amount of time in milliseconds that a managed connection attempts to open a socket connection successfully to a remote Gateway daemon. The timeout is ignored for attempted connections to a local Gateway instance. A value of 0 represents no timeout. | 0 | |
Response Timeout | | Set the response timeout value for a connection to CICS TG. This timeout represents the maximum amount of time in milliseconds that a managed connection attempts to wait for a response to a request. A value of 0 represents no timeout. | 30000 | |
CTG Trace | | Turns all levels of CTG tracing on or off. | false | |
Reconnection | | When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment fails if the test doesn’t pass after exhausting the associated reconnection strategy. | | |
Pooling Profile | | Characteristics of the connection pool. | | |
## Supported Operations
- [Create Channel And Content Instance](#createChannelAndContentInstance)
- [Execute](#execute)
- [Execute Using Commarea](#executeUsingCommarea)
- [Execute With Multiple Channels](#executeWithMultipleChannels)
## Operations
### Create Channel And Content Instance
``
Create an instance of ChannelAndContent to use in the input list of the **Execute with Multiple
channels** operation.
#### Parameters
| Name | Type | Description | Default Value | Required |
|---|
Content | | The input data to be passed to the CICS program. | | x |
Request | | A ChannelRequest that contains the details for request to CTG, such as: program name, TPN, encoding, channel name and its containers (request, response and error). | | x |
Target Variable | | The name of a variable to store the operation’s output. | | |
Target Value | | An expression to evaluate against the operation’s output and store the expression outcome in the target variable. | #[payload] | |
Error Mappings | | Set of error mappings. | | |
#### Output
#### Throws
- IBMCTG:AEI0
- IBMCTG:CONNECTION\_ERROR
- IBMCTG:CONNECTIVITY
- IBMCTG:ECI\_ERR\_INVALID\_CALL\_TYPE
- IBMCTG:ECI\_ERR\_NO\_CICS
- IBMCTG:ECI\_ERR\_SECURITY\_ERROR
- IBMCTG:ECOM
- IBMCTG:ERR\_GATEWAY
- IBMCTG:IBMCCExecution
- IBMCTG:REQUEST\_ERROR
- IBMCTG:RESOURCE
- IBMCTG:SERVER\_ERROR
- IBMCTG:TRANSACTION
- IBMCTG:UNKNOWN
### Execute
``
#### Parameters
| Name | Type | Description | Default Value | Required |
|---|
Configuration | String | The name of the configuration to use. | | x |
Content | | | #[payload] | |
Channel Request | | | | x |
Config Ref | | The name of the configuration to be used to execute this component. | | x |
Transactional Action | ALWAYS_JOIN JOIN_IF_POSSIBLE NOT_SUPPORTED
| The type of joining action that operations can take regarding transactions. | JOIN_IF_POSSIBLE | |
Streaming Strategy | | Configure to use repeatable streams. | | |
Target Variable | | The name of a variable to store the operation’s output. | | |
Target Value | | An expression to evaluate against the operation’s output and store the expression outcome in the target variable. | #[payload] | |
Error Mappings | | Set of error mappings. | | |
Reconnection Strategy | | A retry strategy in case of connectivity errors. | | |
#### Output
#### For Configurations
- [Config](#config)
#### Throws
- IBMCTG:AEI0
- IBMCTG:CONNECTION\_ERROR
- IBMCTG:CONNECTIVITY
- IBMCTG:ECI\_ERR\_INVALID\_CALL\_TYPE
- IBMCTG:ECI\_ERR\_NO\_CICS
- IBMCTG:ECI\_ERR\_SECURITY\_ERROR
- IBMCTG:ECOM
- IBMCTG:ERR\_GATEWAY
- IBMCTG:IBMCCExecution
- IBMCTG:REQUEST\_ERROR
- IBMCTG:RESOURCE
- IBMCTG:RETRY\_EXHAUSTED
- IBMCTG:SERVER\_ERROR
- IBMCTG:TRANSACTION
- IBMCTG:UNKNOWN
### Execute Using Commarea
``
#### Parameters
| Name | Type | Description | Default Value | Required |
|---|
Configuration | String | The name of the configuration to use. | | x |
Content | | | #[payload] | |
Commarea Request Type | | | | x |
Config Ref | | The name of the configuration to be used to execute this component. | | x |
Transactional Action | ALWAYS_JOIN JOIN_IF_POSSIBLE NOT_SUPPORTED
| The type of joining action that operations can take regarding transactions. | JOIN_IF_POSSIBLE | |
Streaming Strategy | | Configure to use repeatable streams. | | |
Target Variable | | The name of a variable to store the operation’s output. | | |
Target Value | | An expression to evaluate against the operation’s output and store the expression outcome in the target variable | #[payload] | |
Error Mappings | | Set of error mappings. | | |
Reconnection Strategy | | A retry strategy in case of connectivity errors | | |
#### Output
#### For Configurations
- [Config](#config)
#### Throws
- IBMCTG:AEI0
- IBMCTG:CONNECTION\_ERROR
- IBMCTG:CONNECTIVITY
- IBMCTG:ECI\_ERR\_INVALID\_CALL\_TYPE
- IBMCTG:ECI\_ERR\_NO\_CICS
- IBMCTG:ECI\_ERR\_SECURITY\_ERROR
- IBMCTG:ECOM
- IBMCTG:ERR\_GATEWAY
- IBMCTG:IBMCCExecution
- IBMCTG:REQUEST\_ERROR
- IBMCTG:RESOURCE
- IBMCTG:RETRY\_EXHAUSTED
- IBMCTG:SERVER\_ERROR
- IBMCTG:TRANSACTION
- IBMCTG:UNKNOWN
### Execute With Multiple Channels
``
Calls a remote CICS program sending data encapsulated in channels and containers, allowing users to
transfer more than 32 KB in a single request.
A container is a named reference to a storage area managed by CICS that can hold any form of
application data. A container can hold data in any format that the application requires and is
limited only by the amount of storage available. An application can reference any number of
containers.
A channel is a uniquely named reference to a collection of containers. It is analogous to a
COMMAREA, but it is not subject to its constraints. Programs can pass a single channel between them.
You can think of a channel as a parameter list. The same channel can be passed from one program to
another.
Channels and containers are visible only to the program that creates them, and to the programs that
they are passed to. When these programs end, CICS automatically deletes the containers and their
storage. They are not recoverable. If you require to use recoverable containers, use CICS BTS
containers.
#### Parameters
| Name | Type | Description | Default Value | Required |
|---|
Configuration | String | The name of the configuration to use. | | x |
Channel And Contents | | A java.util.List of ChannelAndContent containing one or more pairs with channel and the details for request to CTG, such as: program name, TPN, encoding, channel name, and its containers (request, response and error); with this respective content. | #[payload] | |
Output Mime Type | | The MIME type of the payload that this operation outputs. | | |
Output Encoding | | The encoding of the payload that this operation outputs. | | |
Config Ref | | The name of the configuration to be used to execute this component. | | x |
Transactional Action | ALWAYS_JOIN JOIN_IF_POSSIBLE NOT_SUPPORTED
| The type of joining action that operations can take regarding transactions. | JOIN_IF_POSSIBLE | |
Target Variable | | The name of a variable to store the operation’s output. | | |
Target Value | | An expression to evaluate against the operation’s output and store the expression outcome in the target variable | #[payload] | |
Error Mappings | | Set of error mappings. | | |
Reconnection Strategy | | A retry strategy in case of connectivity errors | | |
#### Output
#### For Configurations
- [Config](#config)
#### Throws
- IBMCTG:AEI0
- IBMCTG:CONNECTION\_ERROR
- IBMCTG:CONNECTIVITY
- IBMCTG:ECI\_ERR\_INVALID\_CALL\_TYPE
- IBMCTG:ECI\_ERR\_NO\_CICS
- IBMCTG:ECI\_ERR\_SECURITY\_ERROR
- IBMCTG:ECOM
- IBMCTG:ERR\_GATEWAY
- IBMCTG:IBMCCExecution
- IBMCTG:REQUEST\_ERROR
- IBMCTG:RESOURCE
- IBMCTG:RETRY\_EXHAUSTED
- IBMCTG:SERVER\_ERROR
- IBMCTG:TRANSACTION
- IBMCTG:UNKNOWN
## Types
### Reconnection
| Field | Type | Description | Default Value | Required |
|---|
Fails Deployment | | When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment fails if the test doesn’t pass after exhausting the associated reconnection strategy. | | |
Reconnection Strategy | | The reconnection strategy to use. | | |
### Reconnect
| Field | Type | Description | Default Value | Required |
|---|
Frequency | | How often in milliseconds to reconnect. | | |
Count | | How many reconnection attempts to make. | | |
Blocking | Boolean | If false, the reconnection strategy runs in a separate, non-blocking thread. | true | |
### Reconnect Forever
| Field | Type | Description | Default Value | Required |
|---|
Frequency | | How often in milliseconds to reconnect. | | |
Blocking | Boolean | If false, the reconnection strategy runs in a separate, non-blocking thread. | true | |
### Pooling Profile
| Field | Type | Description | Default Value | Required |
|---|
Max Active | | Controls the maximum number of Mule components that can be borrowed from a session at one time. When set to a negative value, there is no limit to the number of components that may be active at one time. When maxActive is exceeded, the pool is said to be exhausted. | | |
Max Idle | | Controls the maximum number of Mule components that can sit idle in the pool at any time. When set to a negative value, there is no limit to the number of Mule components that may be idle at one time. | | |
Max Wait | | Specifies the number of milliseconds to wait for a pooled component to become available when the pool is exhausted and the exhaustedAction is set to WHEN_EXHAUSTED_WAIT. | | |
Min Eviction Millis | | Determines the minimum amount of time an object may sit idle in the pool before it is eligible for eviction. When non-positive, no objects will be evicted from the pool due to idle time alone. | | |
Eviction Check Interval Millis | | Specifies the number of milliseconds between runs of the object evictor. When non-positive, no object evictor is executed. | | |
Exhausted Action | WHEN_EXHAUSTED_GROW WHEN_EXHAUSTED_WAIT WHEN_EXHAUSTED_FAIL
| Specifies the behavior of the Mule component pool when the pool is exhausted. Possible values are: "WHEN_EXHAUSTED_FAIL", which will throw a NoSuchElementException, "WHEN_EXHAUSTED_WAIT", which will block by invoking Object.wait(long) until a new or idle object is available, or WHEN_EXHAUSTED_GROW, which will create a new Mule instance and return it, essentially making maxActive meaningless. If a positive maxWait value is supplied, it will block for at most that many milliseconds, after which a NoSuchElementException will be thrown. If maxThreadWait is a negative value, it will block indefinitely. | | |
Initialisation Policy | INITIALISE_NONE INITIALISE_ONE INITIALISE_ALL
| Determines how components in a pool should be initialized. The possible values are: INITIALISE_NONE (will not load any components into the pool on startup), INITIALISE_ONE (will load one initial component into the pool on startup), or INITIALISE_ALL (will load all components in the pool on startup) | | |
Disabled | | Whether pooling should be disabled | | |
### Expiration Policy
| Field | Type | Description | Default Value | Required |
|---|
Max Idle Time | | A scalar time value for the maximum amount of time a dynamic configuration instance should be allowed to be idle before it’s considered eligible for expiration | | |
Time Unit | NANOSECONDS MICROSECONDS MILLISECONDS SECONDS MINUTES HOURS DAYS
| A time unit that qualifies the maxIdleTime attribute | | |
### Channel Request
| Field | Type | Description | Default Value | Required |
|---|
Channel | | The name of the channel. Value is case-sensitive. | | x |
Request Container | | The name of the container used to send the request data to the CICS program. Value is case-sensitive. | | x |
Response Container | | The name of the container used to return the data obtained from the CICS program. Value is case-sensitive. | | x |
Error Container | | The name of the container used to return error information if something goes wrong in the CICS program. Value is case-sensitive. | | x |
Program Name | | The name of the CICS program to call. It is case-sensitive. | | x |
Tpn Name | | The transaction identifier of the CICS mirror transaction. Optional. | | |
Encoding | | The data encoding. Default value is IBM037. | IBM037 | |
### Repeatable In Memory Stream
| Field | Type | Description | Default Value | Required |
|---|
Initial Buffer Size | | The amount of memory that will be allocated to consume the stream and provide random access to it. If the stream contains more data than can be fit into this buffer, then the buffer expands according to the bufferSizeIncrement attribute, with an upper limit of maxInMemorySize. | | |
Buffer Size Increment | | This is by how much the buffer size expands if it exceeds its initial size. Setting a value of zero or lower means that the buffer should not expand, meaning that a STREAM_MAXIMUM_SIZE_EXCEEDED error is raised when the buffer gets full. | | |
Max Buffer Size | | The maximum amount of memory to use. If more than that is used then a STREAM_MAXIMUM_SIZE_EXCEEDED error is raised. A value lower than or equal to zero means no limit. | | |
Buffer Unit | | The unit in which all these attributes are expressed | | |
### Repeatable File Store Stream
| Field | Type | Description | Default Value | Required |
|---|
Max In Memory Size | | Defines the maximum memory that the stream should use to keep data in memory. If more than that is consumed then it will start to buffer the content on disk. | | |
Buffer Unit | | The unit in which maxInMemorySize is expressed | | |
### Error Mapping
| Field | Type | Description | Default Value | Required |
|---|
Source | ANY REDELIVERY_EXHAUSTED TRANSFORMATION EXPRESSION SECURITY CLIENT_SECURITY SERVER_SECURITY ROUTING CONNECTIVITY RETRY_EXHAUSTED TIMEOUT
| Source of the error. | | |
Target | | Target of the error. | | x |
### Commarea Request
| Field | Type | Description | Default Value | Required |
|---|
Commarea Length | | The length of COMMAREA. Default value is -1. This should be set to less than or equal to the length of the byte array passed in the payload. The maximum advised size is 32500 bytes, as this is guaranteed to be flowed successfully across all protocols. COMMAREA sizes greater than this may generate an ECI_ERR_INVALID_DATA_LENGTH return code. | -1 | |
Reply Length | | The length of the data stream to be returned back from the Gateway daemon to the Mule (JCA) application. Default value is -1. Setting this property can reduce the data transmitted over the network if the data returned by CICS is less than the full COMMAREA size, and you know the size of the data in advance. | -1 | |
Program Name | | The name of the CICS program to call. It is case-sensitive. | | x |
Tpn Name | | The transaction identifier of the CICS mirror transaction. Optional. | | |
Encoding | | The data encoding. Default value is IBM037. | IBM037 | |
### Channel And Content
| Field | Type | Description | Default Value | Required |
|---|
Channel Request | | | | |
Content | | | | |
## See Also
[Salesforce Help](https://help.salesforce.com)
---
product: IBM CTG Connector
version: 2.3
---
# IBM CTG Connector Reference
> For the full documentation index, see: https://docs.mulesoft.com/llms.txt
IBM CICS Transaction Gateway Connector Version 2.3
Anypoint Connector for IBM CICS Transaction Gateway (IBM CTG Connector) provides integration with
back-end CICS apps using the CICS Transaction Gateway.
Release Notes:
[IBM CICS Transaction Gateway Connector Release Notes](https://docs.mulesoft.com/release-notes/connector/ibm-ctg-connector-release-notes-mule-4)
## Configurations
---
### Config
#### Parameters
| Name | Type | Description | Default Value | Required |
|---|
Name | String | The name for this configuration. Connectors reference the configuration with this name. | | x |
Connection | | The connection types to provide to this configuration. | | x |
Expiration Policy | | Configures the minimum amount of time that a dynamic configuration instance can remain idle before the runtime considers it eligible for expiration. This does not mean that the platform expires the instance at the exact moment that it becomes eligible. The runtime purges the instances when it sees fit. | | |
#### Connection Types
##### Connection
###### Parameters
| Name | Type | Description | Default Value | Required |
|---|
Host | | | localhost | |
Port | | | 2006 | |
Servers name | | | | x |
Username | | | | x |
Password | | | | x |
Keystore location | | The location of the keystore containing the certificates required for an SSL connection. | | |
Keystore Password | | The password required to access the keystore for an SSL connection. | | |
Connection Timeout | | Sets the socket connection timeout value for a connection to CICS TG. This timeout represents the maximum amount of time in milliseconds that a managed connection attempts to open a socket connection successfully to a remote Gateway daemon. The timeout is ignored for attempted connections to a local Gateway instance. A value of 0 represents no timeout. | 0 | |
Response Timeout | | Set the response timeout value for a connection to CICS TG. This timeout represents the maximum amount of time in milliseconds that a managed connection attempts to wait for a response to a request. A value of 0 represents no timeout. | 30000 | |
CTG Trace | | Turns all levels of CTG tracing on or off. | false | |
Reconnection | | When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment fails if the test doesn’t pass after exhausting the associated reconnection strategy. | | |
Pooling Profile | | Characteristics of the connection pool. | | |
## Supported Operations
- [Create Channel And Content Instance](#createChannelAndContentInstance)
- [Execute](#execute)
- [Execute Using Commarea](#executeUsingCommarea)
- [Execute With Multiple Channels](#executeWithMultipleChannels)
## Operations
### Create Channel And Content Instance
``
Create an instance of ChannelAndContent to use in the input list of the **Execute with Multiple
channels** operation.
#### Parameters
| Name | Type | Description | Default Value | Required |
|---|
Content | | The input data to be passed to the CICS program. | | x |
Request | | A ChannelRequest that contains the details for request to CTG, such as: program name, TPN, encoding, channel name and its containers (request, response and error). | | x |
Target Variable | | The name of a variable to store the operation’s output. | | |
Target Value | | An expression to evaluate against the operation’s output and store the expression outcome in the target variable. | #[payload] | |
#### Output
#### Throws
- IBMCTG:AEI0
- IBMCTG:CONNECTION\_ERROR
- IBMCTG:CONNECTIVITY
- IBMCTG:ECI\_ERR\_INVALID\_CALL\_TYPE
- IBMCTG:ECI\_ERR\_NO\_CICS
- IBMCTG:ECI\_ERR\_SECURITY\_ERROR
- IBMCTG:ECOM
- IBMCTG:ERR\_GATEWAY
- IBMCTG:IBMCCExecution
- IBMCTG:REQUEST\_ERROR
- IBMCTG:RESOURCE
- IBMCTG:SERVER\_ERROR
- IBMCTG:TRANSACTION
- IBMCTG:UNKNOWN
### Execute
``
#### Parameters
| Name | Type | Description | Default Value | Required |
|---|
Configuration | String | The name of the configuration to use. | | x |
Content | | | #[payload] | |
Channel Request | | | | x |
Transactional Action | ALWAYS_JOIN JOIN_IF_POSSIBLE NOT_SUPPORTED
| The type of joining action that operations can take regarding transactions. | JOIN_IF_POSSIBLE | |
Streaming Strategy | | Configure to use repeatable streams. | | |
Target Variable | | The name of a variable to store the operation’s output. | | |
Target Value | | An expression to evaluate against the operation’s output and store the expression outcome in the target variable. | #[payload] | |
Reconnection Strategy | | A retry strategy in case of connectivity errors. | | |
#### Output
#### For Configurations
- [Config](#config)
#### Throws
- IBMCTG:AEI0
- IBMCTG:CONNECTION\_ERROR
- IBMCTG:CONNECTIVITY
- IBMCTG:ECI\_ERR\_INVALID\_CALL\_TYPE
- IBMCTG:ECI\_ERR\_NO\_CICS
- IBMCTG:ECI\_ERR\_SECURITY\_ERROR
- IBMCTG:ECOM
- IBMCTG:ERR\_GATEWAY
- IBMCTG:IBMCCExecution
- IBMCTG:REQUEST\_ERROR
- IBMCTG:RESOURCE
- IBMCTG:RETRY\_EXHAUSTED
- IBMCTG:SERVER\_ERROR
- IBMCTG:TRANSACTION
- IBMCTG:UNKNOWN
### Execute Using Commarea
``
#### Parameters
| Name | Type | Description | Default Value | Required |
|---|
Configuration | String | The name of the configuration to use. | | x |
Content | | | #[payload] | |
Commarea Request Type | | | | x |
Transactional Action | ALWAYS_JOIN JOIN_IF_POSSIBLE NOT_SUPPORTED
| The type of joining action that operations can take regarding transactions. | JOIN_IF_POSSIBLE | |
Streaming Strategy | | Configure to use repeatable streams. | | |
Target Variable | | The name of a variable to store the operation’s output. | | |
Target Value | | An expression to evaluate against the operation’s output and store the expression outcome in the target variable | #[payload] | |
Reconnection Strategy | | A retry strategy in case of connectivity errors | | |
#### Output
#### For Configurations
- [Config](#config)
#### Throws
- IBMCTG:AEI0
- IBMCTG:CONNECTION\_ERROR
- IBMCTG:CONNECTIVITY
- IBMCTG:ECI\_ERR\_INVALID\_CALL\_TYPE
- IBMCTG:ECI\_ERR\_NO\_CICS
- IBMCTG:ECI\_ERR\_SECURITY\_ERROR
- IBMCTG:ECOM
- IBMCTG:ERR\_GATEWAY
- IBMCTG:IBMCCExecution
- IBMCTG:REQUEST\_ERROR
- IBMCTG:RESOURCE
- IBMCTG:RETRY\_EXHAUSTED
- IBMCTG:SERVER\_ERROR
- IBMCTG:TRANSACTION
- IBMCTG:UNKNOWN
### Execute With Multiple Channels
``
Calls a remote CICS program sending data encapsulated in channels and containers, allowing users to
transfer more than 32 KB in a single request.
A container is a named reference to a storage area managed by CICS that can hold any form of
application data. A container can hold data in any format that the application requires and is
limited only by the amount of storage available. An application can reference any number of
containers.
A channel is a uniquely named reference to a collection of containers. It is analogous to a
COMMAREA, but it is not subject to its constraints. Programs can pass a single channel between them.
You can think of a channel as a parameter list. The same channel can be passed from one program to
another.
Channels and containers are visible only to the program that creates them, and to the programs that
they are passed to. When these programs end, CICS automatically deletes the containers and their
storage. They are not recoverable. If you require to use recoverable containers, use CICS BTS
containers.
#### Parameters
| Name | Type | Description | Default Value | Required |
|---|
Configuration | String | The name of the configuration to use. | | x |
Channel And Contents | | A java.util.List of ChannelAndContent containing one or more pairs with channel and the details for request to CTG, such as: program name, TPN, encoding, channel name, and its containers (request, response and error); with this respective content. | #[payload] | |
Transactional Action | ALWAYS_JOIN JOIN_IF_POSSIBLE NOT_SUPPORTED
| The type of joining action that operations can take regarding transactions. | JOIN_IF_POSSIBLE | |
Target Variable | | The name of a variable to store the operation’s output. | | |
Target Value | | An expression to evaluate against the operation’s output and store the expression outcome in the target variable | #[payload] | |
Reconnection Strategy | | A retry strategy in case of connectivity errors | | |
#### Output
#### For Configurations
- [Config](#config)
#### Throws
- IBMCTG:AEI0
- IBMCTG:CONNECTION\_ERROR
- IBMCTG:CONNECTIVITY
- IBMCTG:ECI\_ERR\_INVALID\_CALL\_TYPE
- IBMCTG:ECI\_ERR\_NO\_CICS
- IBMCTG:ECI\_ERR\_SECURITY\_ERROR
- IBMCTG:ECOM
- IBMCTG:ERR\_GATEWAY
- IBMCTG:IBMCCExecution
- IBMCTG:REQUEST\_ERROR
- IBMCTG:RESOURCE
- IBMCTG:RETRY\_EXHAUSTED
- IBMCTG:SERVER\_ERROR
- IBMCTG:TRANSACTION
- IBMCTG:UNKNOWN
## Types
### Reconnection
| Field | Type | Description | Default Value | Required |
|---|
Fails Deployment | | When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment fails if the test doesn’t pass after exhausting the associated reconnection strategy. | | |
Reconnection Strategy | | The reconnection strategy to use. | | |
### Reconnect
| Field | Type | Description | Default Value | Required |
|---|
Frequency | | How often in milliseconds to reconnect. | | |
Count | | How many reconnection attempts to make. | | |
blocking | Boolean | If false, the reconnection strategy runs in a separate, non-blocking thread. | true | |
### Reconnect Forever
| Field | Type | Description | Default Value | Required |
|---|
Frequency | | How often in milliseconds to reconnect. | | |
blocking | Boolean | If false, the reconnection strategy runs in a separate, non-blocking thread. | true | |
### Pooling Profile
| Field | Type | Description | Default Value | Required |
|---|
Max Active | | Controls the maximum number of Mule components that can be borrowed from a session at one time. When set to a negative value, there is no limit to the number of components that may be active at one time. When maxActive is exceeded, the pool is said to be exhausted. | | |
Max Idle | | Controls the maximum number of Mule components that can sit idle in the pool at any time. When set to a negative value, there is no limit to the number of Mule components that may be idle at one time. | | |
Max Wait | | Specifies the number of milliseconds to wait for a pooled component to become available when the pool is exhausted and the exhaustedAction is set to WHEN_EXHAUSTED_WAIT. | | |
Min Eviction Millis | | Determines the minimum amount of time an object may sit idle in the pool before it is eligible for eviction. When non-positive, no objects will be evicted from the pool due to idle time alone. | | |
Eviction Check Interval Millis | | Specifies the number of milliseconds between runs of the object evictor. When non-positive, no object evictor is executed. | | |
Exhausted Action | WHEN_EXHAUSTED_GROW WHEN_EXHAUSTED_WAIT WHEN_EXHAUSTED_FAIL
| Specifies the behavior of the Mule component pool when the pool is exhausted. Possible values are: "WHEN_EXHAUSTED_FAIL", which will throw a NoSuchElementException, "WHEN_EXHAUSTED_WAIT", which will block by invoking Object.wait(long) until a new or idle object is available, or WHEN_EXHAUSTED_GROW, which will create a new Mule instance and return it, essentially making maxActive meaningless. If a positive maxWait value is supplied, it will block for at most that many milliseconds, after which a NoSuchElementException will be thrown. If maxThreadWait is a negative value, it will block indefinitely. | | |
Initialisation Policy | INITIALISE_NONE INITIALISE_ONE INITIALISE_ALL
| Determines how components in a pool should be initialized. The possible values are: INITIALISE_NONE (will not load any components into the pool on startup), INITIALISE_ONE (will load one initial component into the pool on startup), or INITIALISE_ALL (will load all components in the pool on startup) | | |
Disabled | | Whether pooling should be disabled | | |
### Expiration Policy
| Field | Type | Description | Default Value | Required |
|---|
Max Idle Time | | A scalar time value for the maximum amount of time a dynamic configuration instance should be allowed to be idle before it’s considered eligible for expiration | | |
Time Unit | NANOSECONDS MICROSECONDS MILLISECONDS SECONDS MINUTES HOURS DAYS
| A time unit that qualifies the maxIdleTime attribute | | |
### Channel Request
| Field | Type | Description | Default Value | Required |
|---|
Channel | | The name of the channel. Value is case-sensitive. | | x |
Request Container | | The name of the container used to send the request data to the CICS program. Value is case-sensitive. | | x |
Response Container | | The name of the container used to return the data obtained from the CICS program. Value is case-sensitive. | | x |
Error Container | | The name of the container used to return error information if something goes wrong in the CICS program. Value is case-sensitive. | | x |
Program Name | | The name of the CICS program to call. It is case-sensitive. | | x |
Tpn Name | | The transaction identifier of the CICS mirror transaction. Optional. | | |
Encoding | | The data encoding. Default value is IBM037. | IBM037 | |
### Repeatable In Memory Stream
| Field | Type | Description | Default Value | Required |
|---|
Initial Buffer Size | | The amount of memory that will be allocated to consume the stream and provide random access to it. If the stream contains more data than can be fit into this buffer, then the buffer expands according to the bufferSizeIncrement attribute, with an upper limit of maxInMemorySize. | | |
Buffer Size Increment | | This is by how much the buffer size expands if it exceeds its initial size. Setting a value of zero or lower means that the buffer should not expand, meaning that a STREAM_MAXIMUM_SIZE_EXCEEDED error is raised when the buffer gets full. | | |
Max Buffer Size | | The maximum amount of memory to use. If more than that is used then a STREAM_MAXIMUM_SIZE_EXCEEDED error is raised. A value lower than or equal to zero means no limit. | | |
Buffer Unit | | The unit in which all these attributes are expressed | | |
### Repeatable File Store Stream
| Field | Type | Description | Default Value | Required |
|---|
Max In Memory Size | | Defines the maximum memory that the stream should use to keep data in memory. If more than that is consumed then it will start to buffer the content on disk. | | |
Buffer Unit | | The unit in which maxInMemorySize is expressed | | |
### Commarea Request
| Field | Type | Description | Default Value | Required |
|---|
Commarea Length | | The length of COMMAREA. Default value is -1. This should be set to less than or equal to the length of the byte array passed in the payload. The maximum advised size is 32500 bytes, as this is guaranteed to be flowed successfully across all protocols. COMMAREA sizes greater than this may generate an ECI_ERR_INVALID_DATA_LENGTH return code. | -1 | |
Reply Length | | The length of the data stream to be returned back from the Gateway daemon to the Mule (JCA) application. Default value is -1. Setting this property can reduce the data transmitted over the network if the data returned by CICS is less than the full COMMAREA size, and you know the size of the data in advance. | -1 | |
Program Name | | The name of the CICS program to call. It is case-sensitive. | | x |
Tpn Name | | The transaction identifier of the CICS mirror transaction. Optional. | | |
Encoding | | The data encoding. Default value is IBM037. | IBM037 | |
### Channel And Content
| Field | Type | Description | Default Value | Required |
|---|
Channel Request | | | | |
Content | | | | |
## See Also
[Salesforce Help](https://help.salesforce.com)
---
product: IBM CTG Connector
version: 3.0
is-latest-version: true
---
# Upgrading and Migrating IBM CTG Connector to Version 3.0
> For the full documentation index, see: https://docs.mulesoft.com/llms.txt
Upgrade Anypoint Connector for IBM CICS Transaction Gateway (IBM CTG Connector) to version 3.x.
## Supported Upgrade Paths
## Changes in This Release
This release contains the following changes:
- The IBM CTG connection no longer fails on the first request.
- The `.isPresent()` check is added to the optional data field to prevent potential null pointer
exceptions.
- The `org.apache.commons:commons-lang3` dependency is upgraded to version 3.18.0 to address
security vulnerabilities.
## Requirements
Ensure that you meet these requirements before you perform the upgrade:
| Application/Service | Version |
|---|
Mule | 4.4.0 and later |
## Upgrade Prerequisites
Before you perform the upgrade, create a backup of your files, data, and configuration in case you
need to restore to the previous version.
## Upgrade Steps
Follow these steps to perform the upgrade:
1. In Anypoint Studio, create a Mule project.
2. In **Mule Palette**, click **Search in Exchange**.
3. In **Add Dependencies to Project**, enter `ibm ctg` in the search field.
4. In **Available modules**, select **IBM CTG** and click **Add**.
5. Click **Finish**.
6. Verify that the IBM CTG Connector dependency version is 3.0 in the `pom.xml` file in the Mule
project.
Studio upgrades the connector automatically.
## Post-Upgrade Steps
After you install the latest version of the connector, verify that your error handling is updated to
work with the minor changes in error codes in this version of the connector.
## Verify the Upgrade
After you install the latest version of the connector, follow these steps to verify the upgrade:
1. In Studio, verify that there are no errors in the **Problems** or **Console** views.
2. Verify that there are no problems in the project `pom.xml` file.
3. Test the connection to verify that the operations work.
## Revert the Upgrade
If it is necessary to revert to the previous version of IBM CTG Connector, change the
`mule-ibm-ctg-connector` dependency version in the project’s `pom.xml` file to the previous version.
You must update the project’s `pom.xml` file in Anypoint Studio.
## See Also
- [Introduction to Anypoint Connectors](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors)
- [Salesforce Help](https://help.salesforce.com)