SAP-samples/btp-a2a-dispute-resolution
A cross-cloud demo in which agents on SAP, Google and Azure discover each other through Open Resource Discovery and settle a shipment dispute over the Agent-to-Agent protocol.
XStore disputes an invoice from Cymbal Direct after a short shipment of 900 t-shirts instead of the expected 1,000, and SAP JouleSAP JouleSAP's unified AI engagement layer across SAP applications: Joule Work is where a user expresses intent, Joule Assistants coordinate agents across business functions, and Joule Agents carry out the tasks, provisioned on BTP as a formation against SAP Cloud Identity Services.sap official, btp orchestrates the resolution: it identifies the agents it needs from an agent catalogue aggregated with Open Resource Discovery, creates a task plan, and routes each step over the Agent-to-Agent protocol. A mocked SAP dispute resolution agent confirms the invoice and shipment data from SAP S/4HANASAP S/4HANASAP's ERP suite, run on-premise or as a private cloud edition, with its business data and processes reached over OData, RFC and the ABAP platform. For the things here it is the system a tool reads from or writes to. The public cloud edition is its own entry., an agent deployed on Google Cloud retrieves the packaging slip showing only 900 shipped, and an agent deployed on Azure drafts the customer email under the dispute policy. It needs an SAP BTP subaccount with the Cloud Foundry runtimeSAP BTP, Cloud Foundry RuntimeThe Cloud Foundry runtime of SAP BTP: memory for applications in a Cloud Foundry org, run from SAP's Java, Node.js and Python buildpacks or community buildpacks and managed with the standard Cloud Foundry tools.sap official, btp enabled, a Business Agent Foundation or Project Agent Builder subscription, and one or more A2A-enabled agent runtimes, for which the repository names Google Vertex AI Agent or Google Cloud Run and Azure AI Foundry Agent or Azure Web Apps. The repository calls its source code and architecture experimental, intended for research and proof-of-concept purposes and subject to change.
Facts
Where it sits
Who is behind it
In the atlas: maintains 222@SAP-samplesmaintainerHarut Ter-MinasyanContributes to this
In the atlas: contributes to 3@hterminasyanjulian-schambeckContributes to this
In the atlas: contributes to 6@julian-schambeckKay SchmitteckertContributes to this
In the atlas: contributes to 6@kay-schmitteckertVedant GuptaContributes to this
In the atlas: contributes to 2@vedant-aero-ml4 contributors
What it declares
Every artifact
- Type
- Sample
- Origin
- By SAP
- Use as
- A reference
As a sample
- Form
- does not say
Connections
Building an agent into your own application
Cloud Foundry runtime of SAP BTP for polyglot applications
Download
README
quoted from SAP-samples/btp-a2a-dispute-resolution under Apache-2.0, readDispute Resolution with Multi-Agent Orchestration
Note
Experimental: The current source code and architecture are experimental, intended for research and proof-of-concept purposes, and are subject to change.
This repository demonstrates an end-to-end scenario where multiple organizations collaborate through domain-specific AI agents to resolve a customer dispute. The agents use an open Agent-to-Agent (A2A) communication protocol and Open Resource Discovery (ORD) to dynamically discover each other's capabilities and collaborate on complex tasks that exceed the scope of a single agent.
Architecture
Note
This architecture illustrates AI agents integrated via point-to-point connections, as currently implemented. Alternatively, a centralized orchestrator per platform could be introduced.
Scenario
XStore disputes an invoice from Cymbal Direct after receiving a short shipment of 900 t-shirts instead of the expected 1,000. Vicky, an employee of Cymbal Direct, uses Joule to resolve the issue with the help of several backend agents representing different organizations and capabilities.
Watch the demo video to see the scenario in action:
Scenario Breakdown
- User Prompt: Vicky reports a shipment discrepancy via Joule.
- Joule as Orchestrator Agent Planning:
- Identifies required agents from the Agent Catalog.
- Creates a task plan for orchestration.
- Agent Orchestration:
- Dispute Resolution Agent, mocked (SAP): Confirms invoice and shipment data from SAP S/4HANA; expected 1,000 units.
- Warehouse Insights Agent (Google): Analyzes logistics and retrieves a packaging slip showing only 900 t-shirts shipped.
- Dispute Policy & Email Agent (Microsoft): Retrieves communication logs and creates an email draft to the customer according to the dispute policy.
- Response to User:
- Confirmation of dispute resolution creation and customer email.
Prerequisites
To run this project, ensure you have access to the following components:
- SAP BTP Subaccount
- Cloud Foundry Runtime enabled
- Business Agent Foundation (BAF) / Project Agent Builder subscription
- One or more A2A-enabled agent runtimes:
- Google Vertex AI Agent or Google Cloud Run
- Azure AI Foundry Agent or Azure Web Apps
Walkthrough & Hands-on Tutorial
- Provision A2A Agents
- Deploy the Agent Catalog
- Set up the Orchestrator as Scenario Entry Point
- Develop & Run locally
- Test It Yourself
Repository Structure
agent-catalog: Agent discovery and routing services
ord-aggregator: Acts asAGENT_CATALOG, aggregates Agent Cards across catalogs (SAP, GCP, Azure) using ORD.a2a-router: Acts asAGENT_ROUTERwhich connects toord-aggregatorand routes requests to appropriate agents using A2A protocol (A2A Client)
agents: A2A agents on SAP, GCP and Azure
- sap-agent-builder-a2a
- agent-builder-a2a-agent-conntector: CAP application that wraps an Agent running on Agent Builder (SAP BTP) to enable A2A and exposing its Agent Card via Open Resource Discovery (ORD).
- agent-builder-agent-exports: Exported agents from BAF
orchestrator: Joule's main entry point for the scenariodispute-resolution-agent: Agent running on Agent Builder (SAP BTP) that handles dispute resolution.
- gcp-adk-a2a: Agent deployed on GCP based on A2A and exposed Agent Card via Open Resource Discovery (ORD).
warehouse-insights-agent: Tracks stock movements across the warehouse and their causes in real-time.
- azure-ai-foundry-a2a: Agent deployed on Azure based on A2A and exposed Agent Card via Open Resource Discovery (ORD).
dispute-email-agent: Agent that creates email drafts according to specific dispute policies for dispute resolution.
Known Issues
No known issues.
How to obtain support
Create an issue in this repository if you find a bug or have questions about the content.
For additional support, ask a question in SAP Community.
Contributing
If you wish to contribute code, offer fixes or improvements, please send a pull request. Due to legal reasons, contributors will be asked to accept a DCO when they create the first pull request to this project. This happens in an automated fashion during the submission process. SAP uses the standard DCO text of the Linux Foundation.
License
Copyright (c) 2026 SAP SE or an SAP affiliate company. All rights reserved. This project is licensed under the Apache Software License, version 2.0 except as noted otherwise in the LICENSE file.
Details
Sources
Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.
Compatibility and provenance
History in the atlas
- First seen.
For your agent
- Ref
artifact:sap-samples-btp-a2a-dispute-resolution- JSON
- /artifacts/sap-samples-btp-a2a-dispute-resolution.json
- MCP
- Connecting an agent
