Generative AI
Copilot
GA

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.

Joule requires BTP — not pure on-premise
SAP Joule is delivered exclusively via SAP BTP. A pure SAP S/4HANA on-premise installation without BTP connectivity cannot use Joule. The minimum setup requires either RISE with SAP (PCE) or an on-premise system connected to BTP via the Cloud Connector and SAP Cloud Identity Services (IAS/IPS).

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

SAP Joule — AI Copilot Overview5:42

SAP Joule — AI Copilot Overview

SAP Developers
Beginner
Joule in SAP S/4HANA — Live Demo18:10

Joule in SAP S/4HANA — Live Demo

SAP Learning
Intermediate
Extending Joule with Custom Skills22:34

Extending Joule with Custom Skills

SAP Developers
Advanced

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).

AI & AutomationSAP Joule
SAP Docs
SAP Joule is the generative AI copilot embedded across SAP applications. A user intent (natural language) is classified by the Skill Router, dispatched to the matching pre-built skill, which calls the relevant SAP backend via OData V4 released APIs, optionally augmented by the Generative AI Hub (LLM Gateway on SAP BTP). Identity and access are propagated via SAP Cloud Identity Services.
Rendering diagram…

SAP Joule — Layered Architecture

User Interface Layer
SAP Fiori Application
S/4HANA, Work Zone, SuccessFactors
SAP Joule Button
Launchpad Embed — Fiori Plugin
SAP Joule Core — SAP BTP
Skill Router
Intent Classification (NLU)
Skill Catalogue
Pre-Built + Custom Skills
Context Manager
Session and User Context
Generative AI Hub
LLM Gateway — Model Lifecycle
SAP Backend Systems
SAP S/4HANA
Released OData V4 APIs
SAP Ariba
Procurement Skills
SAP SuccessFactors
HCM Skills

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.

Joule Skill Execution Flow — From User Utterance to Response
Rendering diagram…
01

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.

02

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.

03

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.

04

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.

05

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.

06

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

01

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.

02

Joule Service Subscription

Subscribe to the Joule service in your BTP Global Account. Included in RISE with SAP; separate entitlement for non-RISE customers.

03

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.

04

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

Joule Booster — BTP CLI commands
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 header

SAP 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.

GA vs Planned
GA = SAP-confirmed with documented capability in the SAP Help Portal or SAP Discovery Center. Planned = announced by SAP at SAP TechEd or via the SAP Road Map Explorer but not yet shipping as generally available. Do not implement planned capabilities as if they are currently available.
Fiori IDApplicationModuleJoule CapabilityStatus
F0717Manage Journal EntriesFinanceNavigation + AI-assisted smart summarisation of posting linesGA
F0974Manage Purchase OrdersProcurement"Show purchase orders from vendor X" + object page summaryGA
F2238Create Supplier InvoiceProcurement"Upload a supplier invoice" — transactional guided assistGA
F1873AManage Sales OrdersSales"Show status of order 12345" + navigation deep-linkGA
F2306Manage Maintenance OrdersAsset MgmtAI maintenance recommendations and work order prioritisationGA
F0760My TimesheetHR (SF)Conversational time entry — Log 8h project work todayGA
F1593My Leave RequestsHR (SF)"Book leave next Monday and Tuesday" — guided leave creationGA
F1314Approve Leave RequestsHR (SF)Joule approval assist — conflict detection and summaryGA
F0235Employee LookupHR (SF)NL employee search by skill, role, locationGA
F0862My Inbox (Task Center)Cross-appSummarise and action workflow items from multiple providersGA
F2076View BrowserAnalyticsAI-Assisted Easy Filter on CDS analytical viewsGA
F2153Create Sales OrdersSalesFull sales order creation via natural language conversationPlanned
F1051Manage Purchase ReqsProcurement"Create a PR for 100 units of material X" — guided creationPlanned
F1873CManage CustomersSalesCustomer data queries and guided creation assistancePlanned
Service Cloud / CXServiceCustomer service ticket summarisation and suggested resolutionRoadmap

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

purchase-order-status.skill.ts — Custom Joule Skill (Joule Studio)
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}
xs-security.json — XSUAA scopes for custom Joule skill
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 Joule — Deployment Landscape Across SAP Products
Rendering diagram…

SAP Build Code

Generally Available
  • 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)

Generally Available
  • 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

Roadmap
  • 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

Roadmap
  • 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

Generally Available
  • 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 Predict
    Automated time-series forecasting and classification models built in SAC
  • Smart Insights
    AI-generated explanation of why a KPI value changed — contributory factor analysis
  • Smart Discovery
    Automated correlation discovery across a dataset — finds influencers on a target measure
  • Joule in Build Code
    Generate Datasphere SQL view definitions and CDS models via Joule in Build Code (GA)

Roadmap — Joule Copilot in Datasphere

Not yet GA
The following items are announced roadmap items. Do not implement or plan production solutions based on these capabilities as if they are currently available.
  • 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
datasphere-joule-context.js — Current GA vs Roadmap reference
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 controls

Enterprise 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

Generally Available

Show me all open purchase orders from Vendor 100 over 50,000 EUR

Role: Procurement Manager
Joule action: Classifies as purchaseOrderQuery intent, calls A_PurchaseOrder OData, returns card with PO list and totals, offers deep-link to each PO
Backend: S/4HANA Cloud — A_PurchaseOrder (OData V4)

HR — Leave Booking

Generally Available

Book me annual leave from the 10th to the 14th of next month

Role: Employee (SuccessFactors)
Joule action: Resolves dates, checks available leave balance, creates leave request via SuccessFactors OData, confirms in panel
Backend: SuccessFactors — TimeAccount, LeaveRequest OData APIs

Finance — GL Summarisation

Generally Available

Summarise the journal entries posted today in company code 1000

Role: Finance Controller
Joule action: Queries journal entry OData API, uses Generative AI Hub to generate a narrative summary of posting types and amounts, returns structured response
Backend: S/4HANA — A_JournalEntry (OData V4) + Gen AI Hub (LLM summarisation)

Inbox — Approval Assist

Generally Available

What approvals are waiting for me and which ones are overdue?

Role: Approving Manager
Joule action: Queries Task Center provider, lists pending items with SLA status, offers one-click approve/reject inline actions, summarises context for each item
Backend: Work Zone Task Center — Build PA, S/4HANA Flexible Workflow, SuccessFactors

Developer — CAP Scaffolding

Generally Available

Create a CAP service for a maintenance order tracking app with HANA Cloud persistence

Role: SAP BTP Developer
Joule action: Generates CDS schema, service definition, HANA Cloud deployment config, and test handler — all in SAP Build Code editor
Backend: SAP Build Code (Joule for developers) — Gen AI Hub

Sales — Order Creation (Planned)

Planned

Create a sales order for customer C1000 for 50 units of material FG100 delivered next Friday

Role: Inside Sales Representative
Joule action: Guides user through sales order creation form, validates availability, proposes delivery date, submits via OData V4
Backend: S/4HANA — A_SalesOrder (OData V4) — full transactional create

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.

SAP Joule — Security and Governance Model
Rendering diagram…

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

Status:Generally AvailablePlannedRoadmapFuture Direction
AI

Joule

Generally Available· GA — core skills GA; Joule Booster GA for RISE customers; advanced skills vary

SAP's generative AI copilot embedded across SAP applications — providing natural language interaction for navigation, transactions, insights, and code generation across the SAP portfolio.

RISESubscription
Active Users

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.

RISE with SAP
AI

AI Core

Generally Available· GA

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
Resource UnitsInference UnitsStorage (GB)

CPEA consumption-based: Resource Units for model training/serving, Inference Units for production AI workloads. Storage charged separately.

AI

Generative AI Hub

Generally Available· GA — 20+ foundation models available; model catalogue continuously updated

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.

CPEA
TokensInference Units

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 EditionAdd-on
Development (BTP)
SAP Build Code — Joule for developersBuild Code subscriptionBuild Code subscription
Generative AI Hub accessAI Core subscriptionAI Core subscription
Custom skill deployment (Joule Studio + Build Code)Joule Studio add-on
Joule Licensing — Key Considerations
SAP Joule core skills are included in RISE with SAP — they are not separately priced for RISE customers. The Joule Booster is a separate, additional entitlement for RISE customers that unlocks extended skill packs and custom skill authoring. Non-RISE customers require the standalone Joule subscription plus SAP AI Business Services licensing. Joule for developers (in SAP Build Code) is licensed separately under the SAP Build Suite. Consult your SAP account executive for the current pricing and entitlement specifics applicable to your contract.

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.

Status:Generally AvailablePlannedRoadmapFuture Direction
Generally Available

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

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

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

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