A comprehensive demonstration of agentic BPMN and multi-agent collaboration built for CamundaCon NYC 2025. This demo showcases how modern process orchestration can integrate AI agents across multiple business capabilities to deliver intelligent, automated customer support.
This demo implements a bank support system that demonstrates:
- Agentic BPMN - BPMN processes that can make autonomous decisions using AI
- Multi-agent collaboration - Multiple specialized agents working together
- Omni-channel interaction - Support across email, chat, and other channels
- Employee engagement integration - Human-in-the-loop workflows when needed
- Long-running agents - Persistent agent state and memory
- Agent-to-Agent (A2A) protocol - Direct communication between agents
- Model Context Protocol (MCP) - Tool discovery and integration
This architecture demonstrates Enterprise Agentic Automation by combining:
- Enterprise-grade orchestration with Camunda's proven BPMN engine
- AI-powered decision making leveraging LLMs
- Seamless integration between different agent technologies (Camunda, Python/Langchain)
- Real-world business scenarios from banking support operations
- Scalable multi-level architecture following Enterprise Process Orchestration principles
The demo follows the levels from Enterprise Process Orchestration. The yellow highlighted components are implemented in this demo:
Level 3 - End-to-End Process:
- Bank Support Agent: Main orchestration process (process model)
Level 4 - Business Capabilities:
- Account Support Agent: Account management using MCP tools (process model)
- Loan Support Agent: Loan support with long-term memory and AI judging (process model)
- Card Support Agent: Python/Langchain agent for card operations (no graphical model)
- Loan Application Process: Traditional deterministic BPMN (process model)
Screenshots of the demo run can be found in Screenshots.pdf.
We have a supportCase variable. Example:
{
"subject": "Help",
"request": "I need to get my bank details to receive money internationally. My customer id = ACC123456789",
"originalMessageInFull": "",
"communicationContext": {
"channel": "email",
"channelId": "<UUID of the channel>",
"emailAddress": "bernd.it.depends.ruecker@gmail.com",
"conversationId": null
},
"customer": {
"name": "Ruecker",
"email": "bernd.it.depends.ruecker@gmail.com",
"firstname": "Bernd",
"id": 7839451262, // ACC123456789?
"address": "Hauptstrasse 123, 10115 Berlin, Germany"
}
}riskAssesment
{
riskClass: "B",
riskAssesment: "No risks specific discovered, fair customer history, payback realistic",
approval: true
}loanApplication:
{
customerId: "15",
lastName: "Ruecker",
firstName: "Bernd",
newCustomer: false,
emailAddress: "bernd.it.depends.ruecker@gmail.com",
requestedTerm: 36,
amountRequested: 2000,
moreData: "..."
}Email Interface
Pass communicationContext and communicationContent:
{
"subject": "RE: " + supportCase.subject,
"text": fromAi(toolCall.response, "The text response to reply to the customer")
}The response:
{
"status": "success",
"email": "...",
"text": "This is what we got"
}
