SAP Joule Coexistence Strategy: A 2x2 Decision Matrix for Enterprise AI Agents

Coexistence strategy for SAP Joule and custom AI agents: use a 2x2 matrix to assign capability ownership and avoid duplication and data lineage chaos.
The article argues that SAP's narrative pushing Joule as a unified AI layer tempts enterprises into duplicating agents, data, and governance — resulting in two agents creating sales orders, two AR balances, and a CFO who trusts neither. The author argues coexistence is the only strategy that ships, offering four foundational principles: single source of truth, role boundaries, shared governance, and Clean Core alignment. The core tool is a 2x2 matrix mapping all AI capabilities onto Joule-owned, custom-owned, kill-the-duplicate, or dual-source-with-contract quadrants based on "SAP-native vs cross-system" and "read vs write." The article also stresses that data lineage must assign authoritative sources and display references in both UIs, costs must be calculated per use case rather than globally, agents must be regression-tested against the same ten questions after each SAP upgrade, and a single product owner should drive zero-duplicate capabilities via KPI.
SAP Joule is not your enemy — unplanned duplication across agents, data, and governance is. This article breaks down a coexistence strategy that actually ships, plus the 2x2 decision matrix that keeps you from building duplicate agents.
A Story About Trust Breaking Down
The SAP account executive smiled: "Joule is the AI copilot for your entire asset landscape." The CIO nodded. Beside them, the architect Priya — who three years earlier had personally built the event bridge between ServiceNow and SAP — kept her laptop closed the entire time.
Six months later, the organization had two agents creating sales orders. Joule did it through S/4HANA public APIs, while the custom agent went through a Z-function REST endpoint the integration team had wrapped back in 2019. Both worked. Both were in production. Only at month-end close, when order counts diverged by 12%, did the two teams realize the other existed.
This isn't Joule's problem — it's the governance problem Joule exposed. SAP's narrative is clean: Joule is SAP's AI layer. Your custom agents, ServiceNow virtual assistants, Salesforce Einstein bots, Slack internal bots — they all do things Joule can now do. The vendor's implicit ask: retire the custom systems, go all-in on Joule.
But the reality: your custom agents carry 15 years of buried business logic that Joule knows nothing about; they run on infrastructure Joule can't touch, governed by policies Joule can't enforce. Ripping and replacing is fantasy. Coexistence is the only strategy that actually ships.

The difference between BAPI and Z-function: BAPI (Business API) is an officially released, cross-version stable standard interface from SAP, complete with documentation, version management, and backward-compatibility commitments. A Z-function, by contrast, is a custom-developed RFC function under the customer's SAP namespace Z*, typically wrapped by an internal integration team, lacking official documentation and upgrade guarantees. When SAP upgrades, BAPI compatibility is SAP's responsibility; Z-functions can silently fail due to underlying table structure or function signature changes. The order-count divergence in this article caused by two different agent paths is a textbook example of BAPI and Z-function paths diverging on transactional semantics (commit timing, error rollback, concurrency locks).
The Coexistence Playbook: Four Foundational Principles
Coexistence isn't a compromise — it's an architectural choice that requires clear boundaries. These four principles form the backbone of a coexistence strategy:
- Single source of truth: Financial figures must come from one path only, with the referenced source labeled in both UIs, avoiding the awkwardness of "two answers"
- Role boundaries: Joule serves business operators inside SAP; your agents serve architects and ops teams — each has its home turf
- Shared governance: Whether Joule or custom agents, they follow the same data classification standards and logging conventions
- Clean Core alignment: Extensions happen via APIs, not shadow bots scraping screens
You don't need a one-shot migration. You need a capability registry with explicit ownership. Inventory every capability — "create sales order," "query AR balance," "summarize incident," "draft purchase requisition" — and place each in a 2x2 matrix: Joule-owned, custom-owned, kill the duplicate, or dual-source with a contract.
What Clean Core means: Clean Core is the architectural principle SAP has championed in recent years, requiring that the S/4HANA standard core remains unmodified by customers (no changing standard code, no writing directly to standard tables), with all extensions delivered through released APIs, the BTP extension framework, or side-by-side extensions. This keeps the core evolving smoothly through SAP upgrades. The article's emphasis on "extensions via APIs, not shadow bots scraping screens" is the Clean Core extension into the AI agent context — any agent must be a consumer outside the core, never a modifier intruding into it.
The 2x2 Coexistence Matrix: Ending Ownership Ambiguity
This matrix forces a conversation — one that should have been triggered on day one of Joule's arrival: who owns what?
| Quadrant | Owner | Action |
|---|---|---|
| Joule does it better | Joule | Retire the custom agent |
| Custom does it better | Custom | Keep it, document the API contract |
| Both can do it | Joule (standard) | Retire custom, redirect the calls |
| Neither does it well | Both | Contract is explicit: who is the source of truth? |
Clean Core is the price of an AI-ready ERP. Joule is SAP's "collect call" — paid in architectural discipline, not duplicated brains.
When Two Brains Answer at Once: The Data Lineage Problem
It's not just agents that get duplicated — it's data. Joule reads SAP table BKPF with a 5-minute cache; your custom stack reads warehouse WMS, SAP, and Ariba in real time. The CFO asks "What's our AR balance?" Joule says $2.4M, the custom agent says $2.38M. That $20K gap directly triggered an audit — and no one owned the reconciliation, because governance never assigned that duty.
Same question, two answers, and the CFO sees both. Governance never assigned ownership.
The fix is to define lineage: which system is the authoritative source for which metric, and show the reference in both UIs. Split by domain: Joule handles in-transaction help; your stack handles cross-system analytics and proprietary policy RAG. Write that split into an architecture decision record, not a hallway verbal agreement.
Supporting measures matter just as much:
- API-first extensions: Clean Core means Joule and your agents share APIs, not screen scraping
- Identity mapping: Same user, same role, consistent authorization across UIs
- Unified auditing: Adopt a single log classification standard, SAP-native or not
- Upgrade calendar: Joule follows SAP's release cadence; plan regression test windows
Two agents without a source-of-truth mapping are two help desks arguing in front of the CFO.
Data lineage: Refers to tracing the full path of every data metric from its original source to its final presentation, including which systems it passed through, what transformations it underwent, and which cache it hit. In the AI agent context, lineage must answer three questions: Which system authoritatively produces this number? How much latency or caching did it go through? Who is accountable for its correctness? In this article, Joule reading BKPF with a 5-minute cache and the custom stack reading WMS in real time are two lineage paths — differing on latency and scope inevitably produces disagreements. Writing lineage into an architecture decision record (ADR) makes source ownership an auditable engineering convention, not a verbal "this one should be authoritative."
When to Let Joule Win
Don't rebuild what SAP has embedded well — transactional wizards, field help, role-aware Fiori actions. Your budget is better spent on event streams tying the warehouse to SAP, custom compliance corpora, and integrations Joule will never prioritize. Pride has killed more architectures than Joule ever has.
Inventory your AI use cases on the 2x2: SAP-native vs cross-system, read vs write. Joule takes the SAP-native quadrants; you take the cross-system ones. Overlaps either get killed or get explicit dual sourcing with labeled references.
| Use case | Owner |
|---|---|
| Fiori field assistant | Joule |
| ServiceNow + SAP bridge | Your stack |
| Custom policy RAG | Your stack |
| Duplicate AR query | Pick one source |
Licensing and Footprint: Run Every Line Item
Joule runs on your SAP licenses and footprint; the custom stack runs on headcount and integration debt. The total cost comparison must cover both. For SAP-native scope, Joule is sometimes cheaper even with less flexibility; for cross-system work, custom is sometimes better. Cost per use case, not once globally.
An architecture review board should score every AI project on fit — Joule, custom, or hybrid — before the build begins. That prevents duplicate investment and turf wars between platform teams.
Change Management for Dual UIs
Users will ask which assistant to trust. Training and in-context guidance beats architecture diagrams. Document "use Joule here, use the portal there" inside the workflow, not on a wiki page nobody reads. Product owners own the split by journey — order-to-cash, hire-to-retire — instead of a central AI team guessing in a vacuum.
Regression Testing at SAP Upgrades
Every SAP upgrade season, re-test Joule and the custom agents on the same ten questions. Post-patch answer drift is normal, but undocumented drift is an incident waiting for month-end close to detonate. Three contracts make it concrete: an API contract with versions and SLAs, a data contract with source-of-truth ownership, and a governance contract with a change advisory board.
Without these contracts, coexistence is just chaos with a better story.
Draw Your Territory Before Joule Draws It for You
The 2x2 in this article — SAP-native vs cross-system, read vs write — isn't a thought exercise. It's a document with named owners that needs to be finished before the next SAP release. If you haven't yet assigned every current AI use case to Joule, your stack, or "kill it," SAP's release cadence will decide for you — and it won't ask your CFO which system they already trust for the AR number.
Don't let Joule admins and custom-agent admins operate in separate orgs, budgets, and roadmaps. That just yields two "create sales order" agents, two AR balances, and a CFO who trusts neither. Appoint a single product owner for "SAP AI capabilities." Their KPI: zero duplicate capabilities. Their budget: unified. Their roadmap: a 2x2 matrix updated quarterly.
Six months later, Priya opened her laptop. The 2x2 matrix hung on the wall. The "create sales order" Z-function had a deprecation date. The ServiceNow bridge had an API contract with an owner and an SLA. The AR balance discrepancy was zero. The CFO never asked another question about Joule.
Coexistence isn't a compromise — it's the only architecture that actually ships.
Related articles

Gaussian Process Bandit Optimization: Exploration Strategies and Inference Regret Guarantees
Cumulative regret guarantees in Bayesian optimization fail to reflect final recommendation quality. This article examines a new study that provides inference regret guarantees for Gaussian process bandit optimization through exploration query strategies and fill distance analysis, validated on hyperparameter optimization and control tasks.

The Most Detailed Codex Guide on Bilibili: From Installation to Real-World Practice
The most detailed Codex guide on Bilibili: from app store installation to daily work mode configuration, with a real coffee shop project demonstrating file organization, data extraction, dashboard creation, and other practical tasks. Learn to use Plan Mode and desktop pets to leverage Codex efficiently.

Appearance Compensation in Volume Rendering: Why RGB Accuracy Cannot Guarantee Density Correctness
Volume rendering research reveals that volumetric data perfectly reproducing external RGB views may still contain density errors: appearance compensation can double central density and keep external rays unchanged even when L2 error exceeds 14.52%. Density recovery depends on appearance capacity, spatial resolution, and measurement design.