Solution Pattern: AI-Powered Application Integration Platform
See the Solution in Action
1. Demonstration
The demo showcases how Red Hat Application Foundations technologies combine to deliver a cloud-native, AI-powered integration platform. The demonstration focuses on:
-
Ingesting purchase orders and storing them securely across infrastructure boundaries via Service Interconnect
-
Bridging disconnected messaging platforms through a Kafka-based event-driven architecture
-
Automating support workflows with AI-assisted case resolution using natural language
-
Enforcing token-based governance on LLM consumption through Connectivity Link
-
Extending the platform with new communication channels following a standard integration pattern
2. Recorded Video
Watch the recorded video of the solution pattern, and find below instructions on how to install the demo and run it.
3. Install the demonstration
3.1. Provision the demonstration environment
-
Provision the following Red Hat Demo Platform (RHDP) item:
-
Build fast and secure AI data flows with Red Hat Application Foundations and Connectivity Link
-
The RHDP catalog item provisions a complete OpenShift environment with all demonstration components pre-installed and configured. You can begin exploring the solution immediately after provisioning completes.
-
The provisioning process takes approximately 60-90 minutes to complete. You will receive an email notification when your environment is ready.
-
-
3.2. Access the demonstration environment
|
The RHDP environment serves two distinct purposes:
For this solution pattern: Follow the walkthrough guide provided in the sections below, not the Lab Instructions. The Lab Instructions contain important reference information (such as credentials, URLs, and environment details) that the walkthrough may reference, but treat them as support material rather than the primary guide. |
Once your RHDP environment is provisioned, you will receive an email with access details. You can find the Lab Instructions link in both the email notification and on the RHDP cluster details page. Clicking this link opens the hands-on workshop guide in a new browser tab.
Use your RHDP-provided credentials to access the lab instructions. In your RHDP instance you’ll find the usernames that have been provisioned, for instance, user1, user2, etc. See below the sample credentials for the user1 username.
Once inside, you’ll find a Resources panel on the right side of the page. Click to expand it and reveal links to all the demonstration components:
|
The Resources panel provides quick access to:
|
3.2.1. Open Dev Spaces and access the terminal
-
Click the Dev Spaces Console link from the Resources panel
-
Click Open to launch the
camel-labworkspace (wait a few moments while it initializes)
-
When the IDE loads, open a terminal by clicking the menu button (three horizontal lines) in the top-left, then select Terminal → New Terminal
The workspace contains pre-configured setup scripts for each demonstration phase. You’ll execute these scripts from the terminal as you progress through the walkthrough.
4. Walkthrough guide
The guide below demonstrates the key capabilities of this Solution Pattern in action.
The walkthrough follows a story. Each phase solves a problem that sets up the next one.
| Hover over each phase in the diagram to learn more. |
flowchart LR
A["Ingest purchase\norders"] -->|"customer spots\na problem"| B["Multi-channel\ncommunication"]
B -->|"agent needs\nhelp resolving"| C["AI-assisted\nsupport"]
C -->|"AI usage must\nbe controlled"| D["Govern AI\nconsumption"]
style A fill:#e8f5e9,stroke:#66bb6a,color:#000
style B fill:#e3f2fd,stroke:#42a5f5,color:#000
style C fill:#fff3e0,stroke:#fb8c00,color:#000
style D fill:#fce4ec,stroke:#ef5350,color:#000
|
The walkthrough below provides a narrative overview of the solution architecture in action. Each phase section describes what happens and why it demonstrates the pattern, without detailed execution steps. To actually run the demonstration yourself with step-by-step commands and setup scripts, open the Lab Instructions from your RHDP environment. The lab chapters map directly to the phases below:
|
4.1. Phase 1: Data Ingestion Flow
Follow the steps below to complete a run through that demonstrates the data ingestion flow.
-
Enable access to the database
The first capability at play in this phase is the ability to securely connect the integration platform to the database. This is achieved using Service Interconnect.
Unfold the instructions below and follow the steps to enable access to the database.
Click this link to unfold instructions.
The database is unreachable by default.
flowchart LR subgraph yoursLabel ["user1-devspaces ."] subgraph yours [" "] Camel[⚙️ Integration] end end Camel -.-x|"❌ unreachable"| SVC subgraph sharedLabel ["shared-database ."] subgraph shared [" "] %% SI2{{"Service\nInterconnect"}} SVC((svc)) SVC --> DB end end DB@{ img: "_images/database-icon.svg", label: "Database", pos: "b", h: 80, w: 80, constraint: "on" } style yoursLabel fill:none,stroke:none,color:#EE0000,font-weight:bold style Camel fill:#f8b4b4,stroke:#EE0000,font-weight:bold style sharedLabel fill:none,stroke:none,color:#EE0000,font-weight:bold style yours fill:#fce4e4,stroke:#EE0000 style shared fill:#fce4e4,stroke:#EE0000 style DB fill:none,stroke:none style SVC fill:#fce4e4,stroke:#EE0000,color:#333To enable access to the database, run the following command in your terminal in Dev Spaces:
You should see all resources reporting
ready OK:Namespace: user1-devspaces ✓ Site ready OK ✓ AccessGrant ready OK ✓ Listener ready OK Namespace: shared-database ✓ AccessToken ready OK ✓ Link ready OKThe above output indicates a Service Interconnect link has been established between your namespace and the database namespace.
flowchart LR subgraph yoursLabel ["user1-devspaces ."] subgraph yours [" "] Camel[⚙️ Integration] SI1{{"Service\nInterconnect"}} end end Camel --> SI1 SI1 -.-|"🔒 secure link"| SI2 subgraph sharedLabel ["shared-database ."] subgraph shared [" "] SI2{{"Service\nInterconnect"}} SVC((svc)) SVC --> DB end end SI2 --> SVC DB@{ img: "_images/database-icon.svg", label: "Database", pos: "b", h: 80, w: 80, constraint: "on" } style yoursLabel fill:none,stroke:none,color:#EE0000,font-weight:bold style sharedLabel fill:none,stroke:none,color:#EE0000,font-weight:bold style yours fill:#fce4e4,stroke:#EE0000 style shared fill:#fce4e4,stroke:#EE0000 style Camel fill:#f8b4b4,stroke:#EE0000,font-weight:bold style DB fill:none,stroke:none style SI1 fill:#f8b4b4,stroke:#EE0000,color:#333 style SI2 fill:#f8b4b4,stroke:#EE0000,color:#333 style SVC fill:#fce4e4,stroke:#EE0000,color:#333 -
Setup and run the data ingestion flow
To setup the processeing flow, run the following command in your terminal in Dev Spaces:
To run the process, run it with the following command:
DevSpaces will detect that port 8080 is open and show a notification — click Open In New Tab to open the embedded Test Shop in your browser.
The Test Shop will now be open in your browser.
-
Submit a purchase order
From the Test Shop web page, follow the steps below to submit a purchase order:
-
Add an item to the basket — note the total amount
-
Expand EDI X12 850 Preview to peek at the raw EDI message — no need to fully understand it, but you may spot the item name, quantity, and total amount in the data
-
Click Place Order — the shop sends the Purchase Order to your Camel route
-
-
View the invoice
The order above is processed, records are added to the database (via Service Interconnect) and an invoice is generated and stored in S3.
Click View Invoice (PDF) to open it in your browser. The Seller section should display the default mapping values mapped from the EDI message:
Seller:Test Shop Warehouse
456 Warehouse Blvd
Stockton, CA 95202Editing the mapping values in the data mapper will update the invoice PDF accordingly. If you want to know more explore the lab instructions.
When you’re done, press Ctrl+C in the terminal to stop Camel.
4.2. Phase2: Multi-Channel Communication
The diagram below shows the four flows enabling bidirectional communication between customer and support agent:
flowchart LR
MX -->|"flow 1"| K -->|"flow 2"| RC
RC -->|"flow 3"| K -->|"flow 4"| MX
MX@{ img: "_images/element-icon.svg", label: "Matrix", pos: "b", h: 100, w: 80, constraint: "on" }
K@{ img: "_images/kafka-icon.svg", label: "Kafka", pos: "b", h: 100, w: 80, constraint: "on" }
RC@{ img: "_images/rocketchat-icon.svg", label: "Rocket.Chat", pos: "b", h: 100, w: 100, constraint: "on" }
style MX fill:none,stroke:none
style K fill:none,stroke:none
style RC fill:none,stroke:none
linkStyle 0 stroke:#66bb6a,stroke-width:2px
linkStyle 1 stroke:#66bb6a,stroke-width:2px
linkStyle 2 stroke:#ef5350,stroke-width:2px
linkStyle 3 stroke:#ef5350,stroke-width:2px
Follow the steps below to complete a run through that demonstrates the multi-channel communication flow.
-
Scale up the flows involved
The flows have been pre-deployed on OpenShift, but are not scaled up. You need to scale them up to enable inter-platform communication.
Unfold the instructions below and follow the steps to enable access to the database.
Click this link to unfold instructions.
From your Dev Spaces terminal, scale up all four deployments to start the flows:
Once all pods are up and running, the Topology view should show blue rings around each deployment:
Access the Topology view from the resources overview on the right side of the lab instructions.
-
Try the flows
Now that all flows are running, it’s time to simulate a conversation between customer and support agent.
For easy onboarding onto Matrix and Rocket.Chat, follow the lab instructions "Lab 2 - Messaging Access" containing the following chapters:
-
Matrix platform onboarding — the customer side
-
Rocket.Chat platform onboarding — the support agent side
Let’s simulate a brief exchange between a customer and a support agent(you will impersonate both personas).
-
Customer sends a message — go to your Matrix room and type:
-
Agent responds — go to your Rocket.Chat room, you should see the customer’s message. Reply with:
If all goes well, both platforms should show the full exchange. You should see something similar to:
MatrixUuser14:10Hi, I need some help with a purchase order I placed recently.4:11user1@rocketchat: Of course! Could you share your order reference so we can look into it?Rocket.ChatUuser1 4:10 PMuser1@matrix: Hi, I need some help with a purchase order I placed recently.Uuser1 4:11 PMOf course! Could you share your order reference so we can look into it? -
4.3. Phase 3: AI-Assisted Case Resolution
The following phase demonstrates how the AI-powered integration platform can assist support agents with complex case resolution tasks.
-
Setup and run the data ingestion flow
-
To setup the processeing flow, run the following command in your terminal in Dev Spaces:
-
Now, use the
mcpscript to start the MCP servers, as follows:The first time you run the MCP servers, it’ll take some time to download dependencies and start.
Run./mcp helpto explore options and troubleshoot issues. -
To run the process, run it with the following command:
Wait for the process to start.
-
-
Try it out
Go through the following steps to recreate the the full resulution process:
-
Switch to the
ai-supportchannelFrom Rocket.Chat, as the support agent, find and select the
ai-supportchannel in the left sidebar:A ⌗ ai-support -
Pull the invoice
From Rocket.Chat, as the support agent, enter the following message:
What if the AI still says it can’t help?
The workshop uses a small LLM that can be inconsistent. The system prompt tells it to re-evaluate its tools before responding, but sometimes it replies as if no tools are available, for example:
rocket.chatUuser1 5:10 PMCan you show me invoice 61356291Aai-bot 5:10 PMI'm sorry, I don't have the capability to retrieve that PDF right now.If that happens, try one or both of these options:
-
Send a more specific request:
This points the LLM to the right tool, which is usually enough to get it working.
-
Stop the process with CTRL+C and restart it. A fresh start gives the LLM a clean tool list.
If all goes well, this time the LLM discovers the tool, calls it, and responds with the invoice:
rocket.chatUuser1 6:47 PMCan you show me invoice 61356291Aai-bot 6:47 PMHere is the PDF for Invoice 61356291.Invoice 61356291 PDF ▾Click to view or downloadThe bot identified the right tool, retrieved the invoice, and returned a download link to the support agent. Clicking the link opens the PDF in a new tab.
See the sample invoice
Invoice no: 61356291Date of issue: 09/06/2012
Seller:Georgia World Congress Center
285 Andrew Young International Blvd NW
Atlanta, Georgia GA 30313
Tax Id: 939-98-8477
IBAN: GB50ACIE59715038217063Client:Chapman, Kim and Green
64751 James Branch
Smithmouth, NC 26872
Tax Id: 949-84-9105ITEMSNo. Description Qty UM Net price Net worth VAT [%] Gross worth 1. Wine Glasses Goblets Pair Clear Glass 5,00 each 12,00 60,00 10% 66,00 2. With Hooks Stemware Storage Multiple Uses Iron Wine Rack Hanging Glass 4,00 each 28,08 112,32 10% 123,55 3. Replacement Corkscrew Parts Spiral Worm Wine Opener Bottle Houdini 1,00 each 7,50 7,50 10% 8,25 4. HOME ESSENTIALS GRADIENT STEMLESS WINE GLASSES SET OF 4 20 FL OZ (591 ml) NEW 1,00 each 12,99 12,99 10% 14,29 SUMMARYVAT [%] Net worth VAT Gross worth 10% 192,81 19,28 212,09 Total $ 192,81 $ 19,28 $ 212,09 -
-
Amend the invoice
The ai-bot can do more than just retrieve data — it can act on it. Imagine the customer has changed their mind and wants to return one of the items. Ask the AI assistant to amend the invoice:
The agentic system inspects the invoice, identifies the matching item, triggers the necessary tools to update the database, and responds with a summary of the changes:
rocket.chatUuser1 6:49 PMThe customer would like to return stemless wine glasses, could you please adjust the invoice?Aai-bot 6:49 PMThe database records have been updated. The stemless wine glasses item (Item 4) has been removed, and the summary values have been recalculated. Would you like to see the new PDF invoice?The agentic system acted autonomously — it inspected the invoice, identified the item, updated the quantity in the database, recalculated the totals, and confirmed the changes. All from a single natural language request.
Notice the bot’s response — it may suggest viewing the updated invoice (LLMs are unpredictable, so the exact wording varies). If it does, simply reply
yes. If it doesn’t, ask to see the amended invoice:Either way, the bot responds with the updated PDF link:
rocket.chatAai-bot 6:50 PMHere is the updated PDF for Invoice 61356291.Invoice 61356291 PDF ▾Click to view or downloadClick the link to open the regenerated invoice.
See a sample of the amended invoice
Notice the red Amended tag in the upper-right corner of the invoice — this indicates the document has been modified from the original. Inspect the document and verify the modifications are correct — the stemless wine glasses (item 4) should be removed, and the totals recalculated accordingly.
-
Raise a ticket
A customer support process rarely ends with a single action. Returning an item involves multiple departments — confirming the goods were received, processing the refund, updating inventory, notifying the customer. Rather than handling each step manually, ask the AI agent to raise a ticket that coordinates everything:
The agentic system gathers the context from the conversation, creates a ticket in the HelpDesk system, and responds with a confirmation:
rocket.chatUuser1 6:52 PMCould you please raise a ticket? Include the details explained, and ask the right departments to refund the customer accordingly.Aai-bot 6:52 PMA ticket has been created with ID 1025. Would you like to share this ticket with the customer?At this point, the bot has created a ticket and asks permission to share it with the customer. You can either reply with "Yes, please share it with the customer." or "Could you share the ticket with the customer?" depending on the bot’s response.
Either way, the final outcome is the same — the bot shares the ticket and the customer receives a link to the HelpDesk system:
rocket.chatAai-bot 6:53 PMThe ticket #1025 has been successfully shared with the customer. They will receive a link to the HelpDesk system.Ticket 1025 ▾Click to open HelpDesk and select ticket 1025Remember — the customer communicates from the Matrix messaging platform. The bot indicated the ticket was shared, which means the customer should have received a message with the ticket reference. Switch to your Matrix window and check.
You should see a message like this:
matrixUuser111:05 ai@rocketchat:📄 Ticket #1025 created.
(Click to open in HelpDesk) -
Verify the ticket from the customer’s perspective
Now put yourself in the customer’s shoes. The customer received a message in Matrix with a link to the Globex HelpDesk ticketing system. Click the ticket link in the Matrix window.
A new tab opens with the Globex HelpDesk login page:
GLOBEXHELPDESKUsernamePasswordLOGINTo login, run the following command to obtain your HelpDesk credentials:
The command above should display your credentials, similar to:
helpdesk_username=user1 helpdesk_password=59QwdxEM
Log in using the credentials displayed in your terminal
Once logged in, the Globex HelpDesk displays the list of open tickets. You should see the ticket the AI agent just created:
Click the ticket to inspect its details. The AI agent composed the ticket body from the conversation — it includes a summary of the changes and a link to the updated invoice:
Refund Request for Invoice 61356291user1 <user1@globex.com>Mar 28, 2026, 07:05amThe customer would like to return stemless wine glasses. The item has been removed from the invoice, and the summary calculations have been updated accordingly. Please process the refund for the customer.The full circle is complete: the AI assistant retrieved an invoice, amended it, raised a ticket with all the relevant details, and shared it with the customer across messaging platforms. All from natural conversation.
-
4.4. Phase 4: Governance and Rate Limiting
The following phase demonstrates how the AI-powered integration platform can be used to implement governance and rate limiting policies.
-
Review and apply the AuthPolicy
Create an AuthPolicy that is applied to the HTTPRoute (ai-proxy-route) and enforces a key-based authentication scheme. This will ensure that only authorized users with a valid API key can access the LLM.
Click this link to unfold the actions.
Examine the AuthPolicy and apply it by pasting the following command in your terminal:
-
Review and apply the TokenRateLimitPolicy
The TokenRateLimitPolicy is a gateway-level resource. It defines token budgets per tier and lets the gateway enforce them independently of the running application.
Click this link to unfold the actions.
The policy defines two token budgets that reflect the cost of each tier:
-
Gold — richer analysis, higher compute cost. A stricter token allowance with a slower renewal window.
-
Silver — lighter analysis, lower compute cost. A more generous token allowance that renews faster.
Review the TokenRateLimitPolicy below and apply it by pasting the following yaml in your new terminal tab:
Notice how the YAML matches the tier budgets described above:
-
goldwith a tighter limit and longer window -
silverwith a more generous allowance that renews faster.
-
-
Setup and run the customer AI assistant
To setup the processeing flow, run the following command in your terminal in Dev Spaces:
To run the process, run it with the following command:
-
Generate a customer profile
From Rocket.Chat issue the following message:
The order number in this request is illustrative — the Customer Profile Tool uses simulated input data from JSON files in the data/folder of your project. You can explore these files in the source code to see the mock CRM, history, audit, and ticket data that feeds the analysis.The system should respond and default to Gold — the richer of the two analysis tiers. You should see a GOLD TIER ANALYSIS with a full customer profile, similar to:
rocket.chatAai-bot 6:49 PM
🏅 GOLD TIER ANALYSIS
📊 Customer Profile- Chapman, Kim and Green, Gold, 3.5 years
- $48,200 annual revenue, Net 30 terms, FedEx Ground preferred
🔍 Sentiment & Risk- Positive sentiment overall, with one Negative interaction
- Low retention risk, with active engagement and resolution of issues
📋 Open Issues- TKT-1025: Refund request — Stemless wine glasses returned (Invoice 61356291), pending confirmation and processing
💡 Recommended ActionFollow up with Dana Kim to confirm receipt of returned goods and finalize refund.Because LLM responses are non-deterministic, the exact wording may differ from the sample above. What matters is the GOLD TIER ANALYSIS banner and the four sections: Customer Profile, Sentiment & Risk, Open Issues, and Recommended Action. At this point, authentication is enforced. Both Gold and Silver keys are configured, and the AuthPolicy validates them before allowing access to the LLM. In the next exercise, you’ll discover how the gateway controls how much each tier can consume, and what happens when a tier reaches its limit.
-
Force a rate limit
In the previous step, the generated profile was based on the Gold tier. Because the rate limit is enforced, the next request will be downgraded to the Silver tier. Credit for gold tier was consumed and the system will default to the Silver tier.
From Rocket.Chat issue the following message:
The system should generate back a Silver profile — the poorer of the two analysis tiers. You should see a SILVER TIER ANALYSIS with a full customer profile, similar to:
rocket.chatAai-bot 6:49 PM
🥈 SILVER TIER ANALYSIS
📊 Customer Profile- Chapman, Kim and Green, Gold membership, US-East region
📋 Open Issues- TKT-1025 — Refund request — Stemless wine glasses returned (Invoice 61356291)
- TKT-0871 — Delayed shipment — Order 58201437 (resolved)
- TKT-0943 — Pricing correction — Order 59843102 (resolved)
-
Force a rate limit exhaustion
Again, from Rocket.Chat issue the same message:
Once both budgets are consumed, the system has no remaining capacity. You should see a SERVICE NOTICE with a
429 Too Many Requestsstatus, confirming that the token rate limiting policy is fully enforced:rocket.chatUuser1 11:25 AMPlease try againAai-bot 11:25 AM
⚠️ SERVICE NOTICE
📡 System Insight- Status: 429 Too Many Requests
- Action: Intelligence Service is currently paused due to high traffic.
- Notice: Please try your request again in a few moments.
Token budgets are not permanent. They operate on a time window basis, so after enough time passes the budgets get replenished. If you wait a few minutes and try again, the system will resume producing profiles following the same fallback strategy: Gold first, then Silver.
🎉 Well done! 🎉
You have completed the walkthrough of the AI-Powered Application Integration Platform solution pattern.
|
This walkthrough provided a narrative overview of the architecture and key capabilities. To experience the platform hands-on with detailed, self-guided instructions, step-by-step commands, and in-depth explanations of each component, explore the Lab Instructions from your RHDP environment. The hands-on lab is designed as a comprehensive workshop experience, perfect for team training sessions or workshop days where multiple students can work collaboratively on the same environment. It offers:
Visit the Lab Instructions to discover all the capabilities in practice — whether individually or as part of a workshop. |
