SAP Joule
SAP's generative AI copilot — embedded across S/4HANA, SuccessFactors, SAP Build, and Datasphere. Understands natural language, classifies user intent, executes skills against released SAP APIs, and responds with structured, actionable results.
What is SAP Joule?
SAP Joule is SAP's generative AI copilot, embedded directly into SAP applications through the Fiori Launchpad. It accepts natural language input, classifies the user's intent, routes the request to the appropriate skill (a purpose-built handler for a specific SAP capability), and responds with structured, actionable results — cards, tables, navigation deep-links, and guided actions.
Joule is built on SAP Business AI and runs on the SAP BTP AI Foundation. It uses the Generative AI Hub as its LLM gateway but is grounded exclusively in SAP application data via released public APIs — it does not generate responses from the LLM alone when performing transactions. User identity and authorisations are enforced through principal propagation to the backend system.
Quick Facts
- Product
- SAP Joule
- Type
- Generative AI copilot (embedded)
- Runtime
- SAP BTP — Joule managed service
- Launched
- SAP TechEd 2023
- LLM Gateway
- Generative AI Hub (model-agnostic)
- Skill Auth
- Released OData V4 APIs only
- Identity
- SAP Cloud Identity Services (IAS/IPS)
- PCE Required
- Yes — or on-premise + BTP
- Custom Skills
- Via Joule Studio + SAP Build Code
- Included In
- RISE with SAP (core skills)
Video Tutorials
Official SAP channel walkthroughs — click any card to play
5:42SAP Joule — AI Copilot Overview
18:10Joule in SAP S/4HANA — Live Demo
22:34Extending Joule with Custom Skills
Joule Architecture
The Joule platform consists of three layers: the user interface layer(Joule panel embedded in the Fiori Launchpad), the Joule Core (running on BTP — intent classification, skill routing, context management, and the Generative AI Hub), and the SAP backend layer (called by skills via released APIs with the user's propagated identity).
SAP Joule — Layered Architecture
Joule Runtime
Understanding the execution flow — from a user utterance to a structured response — is key to extending Joule with custom skills and diagnosing issues.
NLU — Intent Classification
The user's natural language input is processed by the NLU engine. It identifies the intent (e.g., "purchaseOrderStatus") and extracts entities (e.g., "4500012345"). Fine-tuned on SAP business vocabulary.
Skill Router — Best Match
The Skill Router compares the classified intent against all registered skills (pre-built and custom). It selects the highest-confidence matching skill. If no skill meets the threshold, it routes to a grounded LLM fallback.
Context Manager
The Context Manager maintains session context — previous entities, the current Fiori app, user preferences. Skills use this context to resolve ambiguous references ("that order") and personalise responses.
Skill Execution — API Call
The selected skill calls the SAP backend via a released OData V4 API. The user's JWT token is forwarded via principal propagation — the skill inherits the exact same authorisation as the user in the app.
Generative AI Hub — LLM Layer
For responses requiring natural language generation (summaries, explanations, fallback answers), Joule uses the Generative AI Hub. LLM calls are grounded — business data from APIs is passed as context, not generated from training data alone.
Structured Response
Joule returns a typed response — text, card (title + properties + actions), table, or guided action flow. Navigation deep-links allow one-click navigation to the relevant Fiori app and record.
Infrastructure Requirements
S/4HANA PCE or OP + BTP
RISE with SAP delivers PCE + BTP out of the box. On-premise requires BTP Cloud Connector, Connectivity Service, and BTP subaccount with Joule subscription.
Joule Service Subscription
Subscribe to the Joule service in your BTP Global Account. Included in RISE with SAP; separate entitlement for non-RISE customers.
SAP Cloud Identity Services
A shared IAS tenant provisioned via IPS (SCIM) is mandatory. Joule resolves the user context across S/4HANA and BTP using the IAS user attributes.
Joule Booster
Run the Joule Booster in the BTP Cockpit to automatically configure all required destinations, service instances, and Fiori plugin registrations for the connected S/4HANA system.
Joule Booster — BTP CLI
1# SAP Joule Booster — BTP CLI commands for programmatic setup
2# Alternative to the Cockpit UI wizard (useful for scripted deployments)
3
4# 1. Install and authenticate the BTP CLI
5btp login --url https://cli.btp.cloud.sap
6
7# 2. List available boosters in your global account
8btp list accounts/booster
9
10# 3. Execute the Joule S/4HANA integration booster
11# This creates all required BTP destinations and service instances
12btp execute accounts/booster --name "Integrate SAP Joule with SAP S/4HANA" --subaccount <subaccount-id> --parameters '{
13 "s4hanaSystemId": "S4H",
14 "s4hanaHost": "https://<your-s4hana>.s4hana.ondemand.com",
15 "iasHost": "https://<your-tenant>.accounts.ondemand.com",
16 "createDestinations": true
17 }'
18
19# 4. Verify created destinations
20btp list services/instance --subaccount <subaccount-id>
21
22# 5. Check Joule service subscription
23btp get services/subscription --subaccount <subaccount-id> --name "joule"
24
25# Expected destinations created by booster:
26# - JOULE_S4HANA_BACKEND (HTTP + OAuth2SAMLBearerAssertion)
27# - JOULE_IAS_TENANT (HTTP + ClientCertificate)
28# - SAP_AI_RUNTIME_CORE (HTTP + OAuth2ClientCredentials → AI Core)
29# - SAP_GENERATIVE_AI_HUB (HTTP + OAuth2ClientCredentials → Gen AI Hub)
30
31# 6. Verify Joule panel appears in Fiori Launchpad
32# Navigate to S/4HANA Fiori launchpad → confirm Joule button in headerSAP Business AI
SAP Joule is the user-facing embodiment of SAP Business AI — SAP's strategy for embedding AI capabilities across the entire SAP portfolio. Business AI is built on three principles: relevant (grounded in SAP business context), reliable (traceable, no hallucinations on transactions), and responsible (data privacy, auditability, compliance with AI regulations).
Relevant
AI embedded where work happens — inside S/4HANA, SuccessFactors, Ariba, and Build. No context switching. Responses are grounded in the user's actual business data from their own SAP tenant.
- Joule understands SAP business vocabulary (PO, GR, Material Number)
- Pre-built skills for SAP-specific processes
- Session context preserves "the last order I mentioned"
Reliable
Transactional responses are grounded in API data — never generated from LLM training data. Joule only acts within the user's existing authorisations. No direct database writes.
- OData V4 released APIs as the only data source
- Principal propagation: Joule inherits user auth
- Structured responses with source attribution
Responsible
Joule is designed for compliance with AI regulations (EU AI Act, GDPR). Inputs and outputs are logged via the SAP Audit Log Service. No customer data is used to train foundation models.
- SAP AI Ethics Policy applied to all Joule skills
- Audit log for all Joule interactions
- Customer data stays within their BTP tenant
Embedded Joule Experience
Joule is surfaced in SAP applications as an overlay panel launched from the Fiori Launchpad header. It is context-aware — it knows which Fiori app is currently open and can reference the displayed record without the user needing to repeat identifiers.
Joule Panel
- Overlay chat panel in Fiori Launchpad header
- Always-available Joule button (J icon) in header bar
- Maintains session context within a work session
- Supports follow-up questions ("and Q2 as well?")
- Accessible from desktop and SAP Mobile Start
Contextual Awareness
- Detects currently open Fiori application
- References the displayed record ("this purchase order")
- Respects current filter context (selected company code)
- Remembers entities mentioned in the session
- Personalises suggestions based on user role and history
Response Types
- Text: conversational answers and explanations
- Card: structured record summary with key properties
- Table: list of records with sortable columns
- Guided action: step-by-step form filling assistance
- Deep-link action: "Open in Fiori" button in card
Joule in SAP S/4HANA
SAP S/4HANA is the primary deployment target for Joule. Skills are delivered as SAP-provided content and activated via the Joule Booster. The table below lists SAP-confirmed Joule capabilities per Fiori application.
| Fiori ID | Application | Module | Joule Capability | Status |
|---|---|---|---|---|
F0717 | Manage Journal Entries | Finance | Navigation + AI-assisted smart summarisation of posting lines | GA |
F0974 | Manage Purchase Orders | Procurement | "Show purchase orders from vendor X" + object page summary | GA |
F2238 | Create Supplier Invoice | Procurement | "Upload a supplier invoice" — transactional guided assist | GA |
F1873A | Manage Sales Orders | Sales | "Show status of order 12345" + navigation deep-link | GA |
F2306 | Manage Maintenance Orders | Asset Mgmt | AI maintenance recommendations and work order prioritisation | GA |
F0760 | My Timesheet | HR (SF) | Conversational time entry — Log 8h project work today | GA |
F1593 | My Leave Requests | HR (SF) | "Book leave next Monday and Tuesday" — guided leave creation | GA |
F1314 | Approve Leave Requests | HR (SF) | Joule approval assist — conflict detection and summary | GA |
F0235 | Employee Lookup | HR (SF) | NL employee search by skill, role, location | GA |
F0862 | My Inbox (Task Center) | Cross-app | Summarise and action workflow items from multiple providers | GA |
F2076 | View Browser | Analytics | AI-Assisted Easy Filter on CDS analytical views | GA |
F2153 | Create Sales Orders | Sales | Full sales order creation via natural language conversation | Planned |
F1051 | Manage Purchase Reqs | Procurement | "Create a PR for 100 units of material X" — guided creation | Planned |
F1873C | Manage Customers | Sales | Customer data queries and guided creation assistance | Planned |
— | Service Cloud / CX | Service | Customer service ticket summarisation and suggested resolution | Roadmap |
Joule in SAP BTP
On SAP BTP, Joule appears primarily as the AI pair programmer inside SAP Build Code (formerly SAP Business Application Studio) and as the extension point for custom skills via Joule Studio. BTP also hosts the Generative AI Hub — the LLM gateway that Joule uses for language generation.
SAP Build Code — Joule for Developers
SAP Build Code integrates Joule as an AI pair programmer within the SAP Business Application Studio IDE. Developers use natural language to generate CAP services, Fiori Elements UIs, test cases, and deployment descriptors.
- Generate CAP CDS schema from a natural language description
- Scaffold OData service with entity types and relationships
- Auto-generate Fiori Elements annotations from CDS entities
- Explain existing code — "What does this handler do?"
- Suggest unit tests for a CAP service handler
- Generate MTA deployment descriptor from project structure
Generative AI Hub — LLM Foundation
The Generative AI Hub on SAP BTP is a model-agnostic LLM gateway — the foundation on which Joule's language understanding and generation capabilities are built. It provides a unified API for accessing multiple foundation models.
- Access to multiple LLMs: SAP-curated model catalogue
- Prompt lifecycle management — versioning, evaluation
- Grounding with SAP data to prevent hallucinations
- Cost management and token usage tracking
- Model experimentation and A/B comparison
- No customer data used for foundation model training
Custom Skill — Joule Studio Implementation
1// Joule Studio — Custom Skill implementation
2// Built with SAP Build Code; deployed to BTP as a Joule extension
3// Consumes only released OData V4 APIs — no direct database access
4
5import type { JouleSkill, JouleIntent, JouleContext, SkillResponse } from '@sap/joule-sdk'
6
7export default class PurchaseOrderStatusSkill implements JouleSkill {
8 // ── Skill descriptor (registered in Joule Studio) ─────────────────────────
9 static descriptor = {
10 id: 'com.company.procurement.po-status',
11 displayName: 'Purchase Order Status',
12 description:
13 'Returns the current status, open quantity, and delivery date for a purchase order. ' +
14 'Triggered by intents such as "show me PO 4500012345" or "what is the delivery status of my order".',
15 supportedIntents: ['purchaseOrderStatus', 'deliveryStatus', 'orderBlocks'],
16 requiredScopes: ['PurchaseOrder.Read'],
17 }
18
19 async execute(intent: JouleIntent, ctx: JouleContext): Promise<SkillResponse> {
20 // ── Extract entities from the user utterance ────────────────────────────
21 const poNumber = intent.entities.purchaseOrderNumber
22 ?? intent.entities.orderNumber
23 ?? ctx.sessionContext?.lastMentionedPO
24
25 if (!poNumber) {
26 return ctx.clarify('Which purchase order number would you like to check?')
27 }
28
29 // ── Call S/4HANA OData V4 API via released API (principal propagation) ──
30 const [header, items] = await Promise.all([
31 ctx.callApi({
32 destination: 'S4HANA_CLOUD',
33 path: '/sap/opu/odata4/sap/api_purchaseorder_2/srvd_a2x/sap/api_purchaseorder_2/0001/A_PurchaseOrder',
34 params: {
35 '$filter': `PurchaseOrder eq '${poNumber}'`,
36 '$select': 'PurchaseOrder,Supplier,DocumentDate,PurchaseOrderStatus,PaymentTerms,TotalNetOrderAmount,TransactionCurrency',
37 },
38 }),
39 ctx.callApi({
40 destination: 'S4HANA_CLOUD',
41 path: '/sap/opu/odata4/sap/api_purchaseorder_2/srvd_a2x/sap/api_purchaseorder_2/0001/A_PurchaseOrderItem',
42 params: {
43 '$filter': `PurchaseOrder eq '${poNumber}'`,
44 '$select': 'PurchaseOrderItem,Material,PurchaseOrderItemText,OrderQuantity,OpenQuantity,DeliveryDate,GoodsReceiptStatus',
45 },
46 }),
47 ])
48
49 if (!header.value?.length) {
50 return ctx.respond({ type: 'text', text: `Purchase order ${poNumber} was not found, or you do not have access to it.` })
51 }
52
53 const po = header.value[0]
54
55 // ── Build structured card response ─────────────────────────────────────
56 return ctx.respond({
57 type: 'card',
58 title: `Purchase Order ${poNumber}`,
59 subtitle: `Supplier: ${po.Supplier} · Status: ${po.PurchaseOrderStatus}`,
60 properties: [
61 { label: 'Document Date', value: po.DocumentDate },
62 { label: 'Net Value', value: `${po.TotalNetOrderAmount} ${po.TransactionCurrency}` },
63 { label: 'Payment Terms', value: po.PaymentTerms },
64 ],
65 table: {
66 columns: ['Item', 'Material', 'Description', 'Ordered', 'Open', 'Delivery Date', 'GR Status'],
67 rows: items.value.map(item => [
68 item.PurchaseOrderItem,
69 item.Material,
70 item.PurchaseOrderItemText,
71 item.OrderQuantity,
72 item.OpenQuantity,
73 item.DeliveryDate,
74 item.GoodsReceiptStatus,
75 ]),
76 },
77 actions: [
78 {
79 label: 'Open in Fiori',
80 deepLink: `/sap/bc/ui2/flp#PurchaseOrder-displayFactSheet?PurchaseOrder=${poNumber}`,
81 },
82 {
83 label: 'Change PO',
84 deepLink: `/sap/bc/ui2/flp#PurchaseOrder-maintain?PurchaseOrder=${poNumber}`,
85 },
86 ],
87 })
88 }
89}1{
2 "xsappname": "my-joule-extension",
3 "tenant-mode": "dedicated",
4 "description": "XSUAA descriptor for a custom Joule skill extension",
5 "scopes": [
6 {
7 "name": "$XSAPPNAME.PurchaseOrder.Read",
8 "description": "Read access to Purchase Orders via Joule skill",
9 "grant-as-authority-to-apps": ["joule"]
10 },
11 {
12 "name": "$XSAPPNAME.SalesOrder.Read",
13 "description": "Read access to Sales Orders via Joule skill",
14 "grant-as-authority-to-apps": ["joule"]
15 }
16 ],
17 "role-templates": [
18 {
19 "name": "JouleSkillUser",
20 "description": "Users who can invoke custom Joule skills",
21 "scope-references": [
22 "$XSAPPNAME.PurchaseOrder.Read",
23 "$XSAPPNAME.SalesOrder.Read"
24 ]
25 }
26 ],
27 "role-collections": [
28 {
29 "name": "CustomJouleSkillUser",
30 "description": "Assigned to all users who should have access to custom Joule skills",
31 "role-template-references": [
32 "$XSAPPNAME.JouleSkillUser"
33 ]
34 }
35 ],
36 "oauth2-configuration": {
37 "token-validity": 3600,
38 "redirect-uris": ["https://<joule-studio-host>/callback"],
39 "credential-types": ["binding-secret"]
40 }
41}Joule in SAP Build
Joule is being integrated across the SAP Build suite — currently GA in SAP Build Code, embedded in the Work Zone Advanced Edition, and on the roadmap for Build Process Automation and Build Apps.
SAP Build Code
- AI-assisted CAP service generation from NL
- Fiori Elements UI scaffolding
- Code explanation and refactoring
- Unit test generation
- MTA descriptor generation
SAP Build Work Zone (Advanced)
- Joule button embedded in Work Zone portal header
- Answer queries about Work Zone content and cards
- Navigate to tiles and apps via natural language
- Surfaces tasks from Task Center via conversation
- Requires Work Zone Advanced Edition subscription
SAP Build Process Automation
- AI-assisted process design from NL description
- Suggest next process step based on context
- Generate decision table rules from business description
- Summarise process instance audit trail
- Not yet generally available — SAP Road Map
SAP Build Apps
- AI-suggested component layouts from description
- Auto-generate data resource from NL query
- Formula suggestions in Formula Editor
- Screen-to-screen navigation flow generation
- Not yet generally available — SAP Road Map
Joule Studio
- Visual skill builder for custom Joule extensions
- Intent registration and entity extraction config
- Integration with SAP Build Code for skill logic
- Skill testing and deployment to Joule catalogue
- Requires Joule Studio entitlement on BTP
Joule in SAP Datasphere & Analytics
SAP has announced plans to embed Joule as a data and analytics copilot in SAP Datasphere and SAP Analytics Cloud. Currently GA analytics AI capabilities are delivered through SAP Analytics Cloud Smart features (Smart Predict, Smart Insights, Smart Discovery) — separate from the Joule panel. Full Joule integration in Datasphere is on the roadmap.
Currently GA — SAC Smart Features
- Smart PredictAutomated time-series forecasting and classification models built in SAC
- Smart InsightsAI-generated explanation of why a KPI value changed — contributory factor analysis
- Smart DiscoveryAutomated correlation discovery across a dataset — finds influencers on a target measure
- Joule in Build CodeGenerate Datasphere SQL view definitions and CDS models via Joule in Build Code (GA)
Roadmap — Joule Copilot in Datasphere
- Natural language data exploration ("show revenue by region for Q1")
- Joule-generated SAC Story from a data question
- NL-to-SQL query generation grounded in Datasphere data model
- AI-assisted space modelling and entity relationship suggestions
- Joule-driven data quality check narration
1// SAP Datasphere — Joule AI Copilot integration (Roadmap — not yet GA)
2// When available, allows natural language data exploration in Datasphere
3
4// ── Current GA capability: SAC Smart Predict (separate from Joule) ────────────
5// The following represents the announced Joule integration direction
6
7// Joule in Datasphere (Roadmap) — expected natural language queries:
8// User: "Show me total revenue by region for Q1 2025"
9// Joule: generates a SAC Story or Datasphere analytic view
10// based on the authorised data entities
11
12// ── Current GA: Datasphere Python SDK for programmatic data access ────────────
13// This is a current capability — NOT Joule, but shows the data layer
14
15const { HanaClient } = require('@sap/hana-client')
16const { DatasphereClient } = require('@sap/datasphere-client')
17
18async function queryRevenueByRegion(client, options = {}) {
19 const { year = 2025, quarter = 'Q1' } = options
20
21 // Datasphere exposes data via OData V4 and SQL
22 // Authorisation enforced by Datasphere data access controls
23 const result = await client.query(`
24 SELECT
25 REGION,
26 SUM(NET_REVENUE) AS TOTAL_REVENUE,
27 CURRENCY
28 FROM "FINANCE"."REVENUE_BY_REGION_VIEW"
29 WHERE FISCAL_YEAR = '${year}'
30 AND FISCAL_QUARTER = '${quarter}'
31 GROUP BY REGION, CURRENCY
32 ORDER BY TOTAL_REVENUE DESC
33 `)
34
35 return result.rows
36}
37
38// ── Joule integration with Datasphere (when available via roadmap) ────────────
39// Expected: Joule skill registered in Datasphere tenant
40// User asks: "What is the revenue breakdown for Q1 2025?"
41// Joule maps intent → Datasphere OData entity → returns card response
42// All data access governed by Datasphere data access controlsEnterprise Use Cases
The following use cases represent documented or confirmed Joule capabilities in production SAP environments. Status labels are based on SAP Help Portal and SAP Road Map Explorer as of mid-2025.
Procurement — PO Query
“Show me all open purchase orders from Vendor 100 over 50,000 EUR”
HR — Leave Booking
“Book me annual leave from the 10th to the 14th of next month”
Finance — GL Summarisation
“Summarise the journal entries posted today in company code 1000”
Inbox — Approval Assist
“What approvals are waiting for me and which ones are overdue?”
Developer — CAP Scaffolding
“Create a CAP service for a maintenance order tracking app with HANA Cloud persistence”
Sales — Order Creation (Planned)
“Create a sales order for customer C1000 for 50 units of material FG100 delivered next Friday”
Security & Governance
Joule is designed to operate within enterprise security boundaries. Every interaction passes through a layered security model: identity verification, scope enforcement, content filtering, and audit logging.
Identity and Access
- Authentication: SAP Cloud Identity Services (IAS) — SAML 2.0 or OIDC. Corporate IdP federation via IAS trust.
- User Provisioning: SAP Identity Provisioning (IPS/SCIM) syncs user attributes from HR or AD to IAS. Joule resolves user context from IAS.
- XSUAA Scopes: Joule service and custom skills enforce OAuth 2.0 scopes. Users must be assigned the correct role collections on BTP.
- Principal Propagation: The user's JWT token is forwarded to S/4HANA or SuccessFactors. No service account is used — every backend call runs as the named user.
- ABAP Authorisation: S/4HANA authorisation objects (P_ORGL, M_BEST_EKO, etc.) are enforced on the OData layer. Joule cannot access data the user is not authorised to see.
Data Privacy and Content Governance
- No data training: Customer data passed to the LLM for grounding is not used to train foundation models. SAP contractual commitments apply.
- Tenant isolation: Each customer's Joule instance is isolated. No cross-tenant data leakage. BTP tenant data residency policies apply.
- Input filtering: Prompt injection detection: Joule's NLU layer validates user inputs before passing to the LLM layer.
- Output grounding: Transactional responses are derived from OData API results — not generated from LLM training data. Grounding prevents hallucinated values in business responses.
- Audit logging: All Joule interactions are logged via SAP Audit Log Service. Logs include user ID, timestamp, intent, skill executed, and backend API called.
- GDPR compliance: PII in Joule conversations can be subject to GDPR data subject requests. SAP provides data export and deletion mechanisms via the BTP privacy controls.
Governance Checklist
AI Acceptable Use Policy
- Define allowed use cases
- Communicate boundaries to users
- Prohibit use for decisions requiring human oversight
Role and Access Design
- Assign Joule role collections per user group
- Restrict custom skills to authorised users
- Review ABAP auth objects on consumed APIs
Audit and Monitoring
- Enable Audit Log Service
- Define log retention period
- Review Joule interaction logs monthly
Change Management
- Train end users on Joule panel usage
- Communicate new skill availability
- Provide a feedback channel for incorrect responses
Licensing
Joule
SAP's generative AI copilot embedded across SAP applications — providing natural language interaction for navigation, transactions, insights, and code generation across the SAP portfolio.
Core Joule skills included in RISE with SAP. Joule Booster (additional skill pack) is a separate entitlement for RISE customers. Standalone access requires SAP AI Business Services licensing.
AI Core
SAP's MLOps service on SAP BTP — providing infrastructure for AI model training, deployment, serving, and lifecycle management including access to the Generative AI Hub.
CPEA consumption-based: Resource Units for model training/serving, Inference Units for production AI workloads. Storage charged separately.
Generative AI Hub
SAP's curated access point for 20+ foundation models (GPT-4o, Claude, Gemini, Llama, DALL-E, and SAP-specific models) — with data privacy, usage tracking, and SAP context grounding.
Access via SAP AI Core (Standard plan). Token consumption billed per model per 1,000 tokens. All inference processed within SAP-operated infrastructure for data sovereignty.
Joule Entitlement Comparison
SAP Joule — Capability Access by Commercial Model
Capability | RISE with SAPCore skills includedGenerally Available | Joule BoosterAdditional RISE entitlementGenerally Available | StandalonePer-user subscriptionGenerally Available |
|---|---|---|---|
| Core Joule Skills | |||
| SAP Fiori Launchpad Joule panel | |||
| SAP S/4HANA Finance skills (11 GA apps) | |||
| SAP SuccessFactors HR skills | |||
| My Inbox / Task Center Joule assist | |||
| Context-aware navigation | |||
| Joule Booster Features | |||
| Automated BTP destination configuration | |||
| Extended S/4HANA skill packs (Procurement, Sales) | Add-on | ||
| Custom Joule skill authoring (Joule Studio) | Add-on | ||
| Joule in Work Zone Advanced Edition | Add-on | ||
| Development (BTP) | |||
| SAP Build Code — Joule for developers | Build Code subscription | Build Code subscription | |
| Generative AI Hub access | AI Core subscription | AI Core subscription | |
| Custom skill deployment (Joule Studio + Build Code) | Joule Studio add-on | ||
Road Map & Recent Updates
Source: SAP Road Map Explorer (roadmaps.sap.com), SAP Sapphire 2025, and SAP TechEd 2024 announcements. Items reflect publicly disclosed plans as of mid-2025.
Generally Available
- 11 SAP-confirmed Joule skills (S/4HANA + SuccessFactors)
- Joule panel in SAP Fiori Launchpad header
- Joule Booster automated BTP configuration
- Joule for developers in SAP Build Code
- Joule embedded in Work Zone Advanced Edition
- SAP Audit Log Service integration
- Custom skill authoring via Joule Studio
Planned
- Sales Order creation via natural language (full transactional)
- Purchase Requisition creation — "PR for 100 units of X"
- Manage Customers — guided creation and data updates
- Expanded Ariba procurement skills
- Improved follow-up question handling in session context
Roadmap
- Joule embedded in SAP Datasphere (NL data exploration)
- Joule in SAP Analytics Cloud (story narration, forecast explanation)
- Joule in SAP Build Process Automation (AI-assisted process design)
- Joule in SAP Build Apps (AI-assisted app layout generation)
- Expanded multi-turn conversation and task chaining
- Joule actions across multiple connected SAP systems
Future Direction
- Agentic AI — Joule as autonomous process participant (multi-step, cross-app)
- Joule-to-Joule skill chaining across SAP applications
- Proactive Joule notifications ("Your PO X has been blocked")
- Voice-enabled Joule interaction on mobile
- AI-driven personalisation of skill responses per user role
Best Practices
Enforce ABAP authorisation objects — never relax for Joule
Joule inherits the user's ABAP authorisation via principal propagation. Never create a permissive "Joule service account" that bypasses authorisation checks. Every Joule skill call runs with exactly the user's permissions.
Only consume released OData V4 APIs in custom skills
Custom Joule skills must use SAP-released, stable public APIs (available on the SAP API Business Hub). Never use internal BAPI proxies, direct RFC calls, or undocumented endpoints. Unreleased APIs break on upgrade without notice.
Run the Joule Booster after each S/4HANA upgrade
New Joule skill packs and navigation service registrations are delivered with each S/4HANA update. Re-running the Booster after an upgrade ensures new skills are activated and outdated configurations are refreshed.
Enable Audit Log before going to production
The SAP Audit Log Service must be enabled in your BTP subaccount before Joule is activated in production. Audit logs cannot be reconstructed retroactively. Define your log retention period to meet your compliance requirements.
Train users on what Joule can and cannot do
Users who expect Joule to behave like a general-purpose chatbot (hallucinating answers) will be frustrated when it correctly refuses to speculate. Set expectations clearly: Joule is grounded in your SAP data, not the internet.
Design custom skills to be stateless
Each skill execution receives the full session context from the Context Manager. Skills should not store state externally between calls. Use the context object for session data — this keeps skills scalable and re-entrant.
Common Pitfalls
IAS tenant not shared with S/4HANA
Joule resolves the user context via IAS. If the S/4HANA tenant and the BTP Joule tenant use different IAS instances, user identity cannot be resolved. All systems must share the same IAS tenant.
Joule Booster not re-run after upgrade
New Fiori apps with Joule capability are delivered in S/4HANA updates. Without re-running the Booster, those new skills are not activated and the Joule button does not appear on newly enabled apps.
Custom skill using internal SAP APIs
Skills built on undocumented or unreleased SAP APIs will break silently after an S/4HANA upgrade. The SAP API Business Hub API status (Released vs Restricted) must be checked before using any API in a Joule skill.
Treating roadmap items as currently available
SAP Datasphere NL exploration, Build Apps AI layout, and several additional S/4HANA skills are on the roadmap — not GA. Do not include them in architecture decisions or user training material for current implementations.
Missing SCIM user attribute mapping
Joule requires user email address and system mapping to be present in IAS (provisioned via IPS). Missing or incorrect SCIM attribute mapping causes "user not found" errors in the Joule panel.
Expecting Joule to generate data not in SAP
Joule does not have access to external knowledge. For business data questions, it can only return what is present in the connected SAP system APIs. Asking "what is the market price for material X?" will not return a reliable answer.
SAP References
Official product documentation: architecture, setup, skills catalogue, Joule Booster, Joule Studio.
Service catalog: missions, tutorials, feature availability, quick-start guides.
SAP's AI strategy: Relevant, Reliable, Responsible — Business AI product portfolio.
LLM gateway on BTP — model catalogue, prompt lifecycle management, grounding.
Custom skill authoring: intent registration, entity extraction, skill deployment.
SAP Road Map Explorer: planned skill releases, quarters, and GA milestone dates.
IAS and IPS configuration — mandatory for Joule user context resolution.
Joule AI pair programmer in SAP Build Code — code generation, CAP scaffolding, explanation.