Skip to content

IBM App Connect Enterprise in practice

IBM App Connect Enterprise (ACE), the successor of IBM Integration Bus, is the integration engine inside IBM Cloud Pak for Integration. It connects systems that were never designed to talk to each other: an ERP, a REST API, a message queue, a file drop, a partner's SOAP service.

This is the mental model I wish I'd had on day one.

The building blocks

Concept What it is
Message flow A graph of nodes: an input, some processing, one or more outputs.
Application / REST API project A deployable unit that groups flows, maps and ESQL.
Library / shared library Reusable code and schemas shared by several applications.
BAR file The packaged, deployable archive (Broker ARchive).
Integration server The runtime process that runs your deployed applications.
Policy Externalized configuration: endpoints, credentials, MQ connections.

A typical flow looks like this:

flowchart LR
    I[HTTP Input] --> V[Validate]
    V --> C[Compute: ESQL transform]
    C --> R[HTTP Request: ERP API]
    R --> O[HTTP Reply]
    V -. failure .-> E[Error handler]

Transforming messages with ESQL

The Compute node runs ESQL, ACE's language for reading and building message trees. Here a JSON order from a client is reshaped for a back-end system:

CREATE COMPUTE MODULE TransformOrder_Compute
  CREATE FUNCTION Main() RETURNS BOOLEAN
  BEGIN
    SET OutputRoot.Properties = InputRoot.Properties;

    SET OutputRoot.JSON.Data.orderNumber = InputRoot.JSON.Data.id;
    SET OutputRoot.JSON.Data.customerName = InputRoot.JSON.Data.customer.name;
    SET OutputRoot.JSON.Data.total = CAST(InputRoot.JSON.Data.amount AS DECIMAL);

    RETURN TRUE;
  END;
END MODULE;

For mapping-heavy work, the graphical Mapping node is often easier to maintain. I use ESQL when the logic has conditions, loops or lookups.

Build and deploy from the command line

ACE 12 ships the ibmint tool, which makes builds scriptable and CI/CD friendly:

# Package an application into a BAR file
ibmint package --input-path ./workspace --project OrdersApp \
  --output-bar-file ./build/orders.bar

# Deploy it into an independent integration server's work directory
ibmint deploy --input-bar-file ./build/orders.bar \
  --output-work-directory /home/aceuser/ace-server

The same BAR file is then promoted through every environment, the same way you would promote a container image.

Keep configuration out of the code

Endpoints, credentials and connection details belong in policies, not hard-coded in flows. On Cloud Pak for Integration, policies and credentials are supplied as configurations attached to the integration runtime. The same BAR then runs in development, test and production with only the configuration changing.

Lessons from production

  • Design the contract first. Agree on the request, response and error formats before building the flow.
  • Handle errors deliberately. Wire the failure and catch terminals; never let a message disappear silently.
  • Log a correlation ID at every hop so one transaction can be traced across systems.
  • Keep flows small. Several focused flows are easier to test and operate than one huge flow.

Connecting systems in your organization? Let's talk.