BrowseAll ecosystems
Everything in the atlas
786 of 2362
Domain
Signals
Content
More: 2
Group by: Domain
EntryBySignalsLast activity
⚡Unlocking the Power of LLMs in CAP: Understanding llms.txt and llms-full.txt⚡Unlocking the Power of LLMs in CAP: Understanding llms.txt and llms-full.txtllms.txt and llms-full.txt for CAP — a plain-text map of the documentation, written for an agent that arrived by fetching a URL rather than one somebody configured. The convention the atlas uses for itself, applied to capire.Yogananda, published 2025-05-18
A ChatGPT-like chat app built with modern SAP technologies (CAP, SAPUI5) – Part 1/3A ChatGPT-like chat app built with modern SAP technologies (CAP, SAPUI5) – Part 1/3The concepts before the code: what the GPT model and its API actually offer, and what the finished chat application looks like — personalities included. Written in the weeks when the ground was moving under it, and the post carries its own change log to prove it: GPT-3.5 added on 1 March, GPT-4 on 15 March, and an admission that a series planned as two posts became three.published 2023-02-22
A ChatGPT-like chat app built with modern SAP technologies (CAP, SAPUI5) – Part 1/3
cap-ui5-gpt-chat: no published releases, repository quiet for 42 months. Affects Runnable code.
A ChatGPT-like chat app built with modern SAP technologies (CAP, SAPUI5) – Part 2/3A ChatGPT-like chat app built with modern SAP technologies (CAP, SAPUI5) – Part 2/3The backend: CAP with TypeScript, the entities holding chats and personalities, and the service that talks to the API. This is where the streamed completion and the repositories behind the handler come from, which is the part of the sample still worth lifting even though the model access has since been superseded by AI Core.published 2023-02-24
A ChatGPT-like chat app built with modern SAP technologies (CAP, SAPUI5) – Part 2/3
cap-ui5-gpt-chat: no published releases, repository quiet for 42 months. Affects Runnable code.
A ChatGPT-like chat app built with modern SAP technologies (CAP, SAPUI5) – Part 3/3A ChatGPT-like chat app built with modern SAP technologies (CAP, SAPUI5) – Part 3/3The SAPUI5 frontend of the sample, and mostly an argument for writing UI5 in TypeScript: ES imports in place of sap.ui.define, a class with real private members in place of the underscore convention, and the service types generated from the CDS model copied into the UI package, so one IChats interface types the OData object the controller reads. The second half is structure — a formatter class and a singleton LayoutManager called from the XML view through core:require, a confirmation helper taking a callback, a dialog class resolving a promise, a generic createEntity<T> on a service class — all of it to keep every controller under 100 lines. What it says about arranging a UI5 app holds whatever model sits behind the chat; the tooling around it is of its date, and the post calls UI5's TypeScript support experimental.published 2023-02-27
A ChatGPT-like chat app built with modern SAP technologies (CAP, SAPUI5) – Part 3/3
cds2types. Affects Runnable code.
ABAP + MCP: Let AI Do Real Development in Your SAP SystemABAP + MCP: Let AI Do Real Development in Your SAP Systemabap-adt-mcp is an open-source MCP server that gives an AI agent full ABAP development capability over ADT: it searches, reads, edits, activates and unit-tests objects, and runs ATC checks, on a connected S/4HANA Cloud or on-premise system, acting as the signed-in developer. It runs on abap-adt-api, the same REST client Eclipse's own ADT tooling uses, and sits beside SAP's own ADT MCP Server, shipped with ADT for VS Code and Eclipse under a different server key, and marianfoo's abap-docs, a read-only server over the ABAP Keyword Documentation and Clean ABAP. Each destination carries a policy — read-only, allowed packages, denied tables and tools — the server checks before every call, and an optional audit file logs each tool call with its outcome and policy gate.Willian_Saez, published 2026-09-03
ABAP development tools for Visual Studio Code: Patch 1.0.1 releasedABAP development tools for Visual Studio Code: Patch 1.0.1 releasedA patch to SAP's ABAP development tools for Visual Studio Code, released after two weeks of user feedback: RFC destinations with password logon return, undoing what the first release had dropped, and the extension now ships the AGENTS.md template its documentation already carried, so a project gets agent guidance built in rather than copied by hand. The author still recommends duplicating the template and adding project-specific instructions, since the time spent on that onboarding is what the agent's results depend on.thomasalexander_ritter, published 2026-06-12
ABAP development tools for Visual Studio Code: Version 1.1 releasedABAP development tools for Visual Studio Code: Version 1.1 releasedVersion 1.1 of ABAP development tools for Visual Studio Code adds two tools to the extension's local ADT MCP Server: a unified, git-like diff for a transport request, and a runner for ABAP Test Cockpit checks, both meant for an agent to call rather than a person to click through. Both are new instances of what agent access to your code already covers for ABAP — reading and acting on a real system through ADT — reaching now into a transport's changes and a check run rather than only source and objects.thomasalexander_ritter, published 2026-07-21
Adapting SAP Joule for Purchase Order Creation from an Existing Purchase RequisitionAdapting SAP Joule for Purchase Order Creation from an Existing Purchase RequisitionA custom Joule Agent and Joule Skill, built in Joule Studio, classic edition to extend SAP Joule past its built-in Purchase Order display and change features: a buyer's single sentence naming a Purchase Requisition number becomes a created Purchase Order, with the skill wrapping the Purchase Requisition and Purchase Order OData V4 APIs as Action Packages reached through two destinations. The author anchors the agent's success condition to a PurchaseOrderNumber in the skill's output rather than an HTTP status code, and reports that the Purchase Requisition item structure does not map one-to-one onto the Purchase Order creation payload.jonathanvi59, published 2026-08-19
An Innovative Language Exchange App developed with SAP Build Apps, CAP, Kyma, and OpenAIAn Innovative Language Exchange App developed with SAP Build Apps, CAP, Kyma, and OpenAIA dormant internal app at SAP Japan revived with AI, built to solve a problem the team actually had — colleagues who could not talk to each other. Build Apps on the front, CAP on Kyma behind it, OpenAI in the middle.javieryw, published 2024-01-31
An Innovative Language Exchange App developed with SAP Build Apps, CAP, Kyma, and OpenAI
LLM integration changed in @cap-js/ai 1.0.0, 2026-04-28. Affects Runnable code.
Automate your Job Postings Using Generative AI (ChatGPT) & SAP Build Process Automation AppsAutomate your Job Postings Using Generative AI (ChatGPT) & SAP Build Process Automation AppsA process that drafts its own text: ChatGPT writing job postings, SAP Build Process Automation carrying them through approval, and CAP in between. Presented as a generic pattern the author expects to be adapted rather than copied.shivamshukla12, published 2023-08-10
Autonomous Diagnostics on Kyma Unplugged: Goose + LiteLLM + KRO + SAP AI Core in ProductionAutonomous Diagnostics on Kyma Unplugged: Goose + LiteLLM + KRO + SAP AI Core in ProductionAn in-cluster autonomous diagnostic pipeline on Kyma Unplugged (open-source Kyma, noted to also run on SAP BTP, Kyma runtime): a Goose agent with kubectl access calls SAP AI Core through a LiteLLM proxy, and most of the post is about the quirks of that route — drop_params silently swallowing unrecognised parameters and beta headers, streaming that has to be off when tools are attached, and prompt caching that sits on the Orchestration V2 API rather than the foundation-model path the LiteLLM provider hits. A second Node.js proxy reaches that API, and the author reports caching unconfirmed at production scale, which leaves the roughly $0.004 per static run a target rather than a measured figure. Spend metrics reach SAP Cloud Logging over OTLP through Kyma's Telemetry MetricPipeline while the health analysis itself lands in Kubernetes custom resources read in Busola, and the stack is declared as KRO Resource Group Definitions applied with one Terraform command.quovadis, published 2026-07-09
Banking Sentinel: A Multi-Agent Credit-Risk Copilot on SAP BTP, Built on a Mixed AI StackBanking Sentinel: A Multi-Agent Credit-Risk Copilot on SAP BTP, Built on a Mixed AI StackThe risk it is chasing is a graph problem stated in banking terms: a borrower who looks safe alone and is the linchpin of a group ten times the size. Multi-agent, mixed AI stack, on BTP and CAP.Shahid, published 2026-06-24
Banking Sentinel: A Multi-Agent Credit-Risk Copilot on SAP BTP, Built on a Mixed AI Stack
Agent tooling changed in @cap-js/agents 0.9.1, 2026-08-14. Affects A recipe, Runnable code.
Boost your CAP Development with AI: Introducing the MCP Server for CAPBoost your CAP Development with AI: Introducing the MCP Server for CAPThe announcement of the development-tool half of the two things called MCP here: a server that gives an agent context about the project in front of it and relevant CAP examples, so Claude Code or Copilot steers better. Names the agents it was tried with, which is more than most announcements do.published 2025-09-03
Build Your AI Agent prototype for free using SAP CAP, LangChain and Ollama cloudBuild Your AI Agent prototype for free using SAP CAP, LangChain and Ollama cloudA CAP Node.js service action calls an Ollama-hosted model through LangChain's ChatOllama, with the API key read from a .env file instead of any destination or credential binding — the hand-rolled-key route SAP's own SDK call exists to avoid. The same handler then builds a LangChain agent with createAgent and one mock tool, so a question about restaurants triggers a tool call and any other question does not, independent of the @cap-js/agents plugin's A2A-served harness.rajeevgoswami1, published 2026-08-29
Building a CAP service with cds‑mcp and Cline — HANDS‑ON SUPER BASIC GUIDE [ with screenshots ] 🍌Building a CAP service with cds‑mcp and Cline — HANDS‑ON SUPER BASIC GUIDE [ with screenshots ] 🍌Somebody following the CAP MCP server announcement all the way through, and writing down what it cost: a CAP service in VS Code wired to S/4HANA through a destination, plus the real bumps — Windows PATH and global installs — that the announcement does not have.smarchesini, published 2025-09-21
Building a Generative AI-powered Inventory Assistant with SAP CAP, RAG, and Vector DatabaseBuilding a Generative AI-powered Inventory Assistant with SAP CAP, RAG, and Vector DatabaseAn existing CAP stock application turned into a question-answering one, and the part worth reading is the schema: three tables, not one — the products, an archive of the text that was embedded, and a separate lookup table holding the vectors. Retrieval finds candidate products by similarity and then reads the real rows, so the answer is grounded in records rather than in the embedded text.furkan5, published 2025-11-07
Building a Pro-Code Agent on SAP BTP — Part 2: The Agent (LangGraph + GenAI Hub)Building a Pro-Code Agent on SAP BTP — Part 2: The Agent (LangGraph + GenAI Hub)Part 2 of a three-part series builds a separate, non-CAP Node/TypeScript agent that calls the Part 1 CAP service's MCP tools and reasons through SAP AI Core via @sap-ai-sdk/orchestration, using LangGraph's createAgent ReAct loop for provider-agnostic model calls across GPT, Claude and Gemini deployments. It explains why the tool's Zod schema and model-facing description are the agent's actual contract, the gotcha between a foundation-models deployment and an orchestration-scenario one, and how edge-case testing replaced date inference with a server-computed daysOverdue field after the agent wrongly called a delayed order 'on schedule'.rodfior, published 2026-08-20
Building a Pro-Code Agent on SAP BTP — Part 3: Joule Integration via A2ABuilding a Pro-Code Agent on SAP BTP — Part 3: Joule Integration via A2AThe third instalment of a three-part series deploys an already-built CAP service and LangGraph agent to SAP BTP, Cloud Foundry Runtime, wraps the agent in an A2A protocol server, and registers it with SAP Joule through a capability YAML and the @sap/joule-studio-cli, confirming the chain works end to end inside a real Joule assistant. It covers CAP's default JWT/XSUAA authentication in production, what a test deployment needs to get past it, and the cf push, mbt build and environment wiring that run both apps as separate Cloud Foundry containers. A closing section names what stays unfinished by design — a long-lived AI Core service key, no authentication on the BTP destination, no principal propagation — as the gap between this MVP and a production posture.rodfior, published 2026-08-20
Building an LLM Agent in CAP Java with Spring AIBuilding an LLM Agent in CAP Java with Spring AIThe Java counterpart to the author's own Node.js post, and written as one: connecting to AI Core with the SAP AI SDK, then calling an agent and a tool through Spring AI. Opens with a section on libraries and workflows — which framework does what, and what is left to you — before any code.published 2026-06-08
Building an LLM Agent in CAP Java with Spring AI
Agent tooling changed in @cap-js/agents 0.9.1, 2026-08-14. Affects Runnable code.
Building an LLM Agent using CAPBuilding an LLM Agent using CAPThe argument is that CAP is already most of what an agent framework wants — services, handlers, a typed model — so the agent is built inside it rather than beside it. AI Core through sap-ai-sdk, then Langchain for the agent and its tools. Long, with a TLDR at the top for people who want the shape without the walk.published 2026-05-27
Building an LLM Agent using CAP
Agent tooling changed in @cap-js/agents 0.9.1, 2026-08-14. Affects Runnable code.
Building Durable AI Agents - Announcing the cds-langgraph-persistence PluginBuilding Durable AI Agents - Announcing the cds-langgraph-persistence PluginThe announcement, and the argument behind it. Treating an agent as a software architecture rather than a model with tools makes a list of production requirements — identity, authn and authz, multitenancy, persistence, event-driven flows, scalability, observability, CI/CD — and the author's point is that CAP already answers most of them for BTP, which is what makes LangGraph inside CAP Node.js worth doing. The post then narrows to one of those requirements, durability, and the checkpointer that supplies it. Written from a year of building agents next to real business systems rather than as a framework tour.merbinjanselm, published 2026-07-15
Building Durable AI Agents - Announcing the cds-langgraph-persistence Plugin
@mi8y/cds-langgraph-persistence has been through 3 major lines since this was published: 0.5 (2026-07), 0.6 (2026-07), 0.7 (2026-09). Affects Runnable code.
Calling Claude from ABAP: How I Wired SAP AI Core into a Real Business ScenarioCalling Claude from ABAP: How I Wired SAP AI Core into a Real Business ScenarioA proof of concept wiring SAP AI Core's Claude deployment directly into ABAP with no CAP layer between them: two SM59 HTTP destinations, a hand-written OAuth 2.0 client-credentials exchange, and a regex to unwrap Claude's system/messages response envelope. Most of the effort goes into a system prompt that constrains the model to return one fixed JSON schema of filter fields, which ABAP deserialises with /UI2/CL_JSON and exposes through a RAP custom action so a Fiori search field can drive an OData V4 filter.PranayGaroo, published 2026-06-04
cds-toon-ai-protocol-adapter: a pragmatic way to cut AI token costs using SAP CAPcds-toon-ai-protocol-adapter: a pragmatic way to cut AI token costs using SAP CAPNames a cost most CAP-plus-LLM writing ignores: every JSON payload streamed to a model is billed by its verbosity, in latency as well as money. The plugin brings TOON — Token-Oriented Object Notation — to a CAP service so the wire format changes without the service code doing so, in a REST variant and an OData one, with token counts reported on both sides.published 2026-01-25
Claude Code via MCP: Poor man's Joule, or a practical tool?Claude Code via MCP: Poor man's Joule, or a practical tool?The author drives Claude Code against a live ABAP system through vibing-steampunk, an ADT-to-MCP bridge that locks and unlocks objects on the agent's behalf so the model can concentrate on the change: extending an ALV report, turning its SELECT into a CDS view, and answering ad-hoc questions over the report's own data. Where Claude got it wrong — a RAP scaffold missing the fields RAP's locking mechanism needs, ORDER as a reserved word — the piece asks where that knowledge would go as a Skill, and concludes Skills' filesystem basis has no home in a system reached only through MCP.k1000, published 2026-03-08
Creating a meal generator application with SAP Build, Cloud Application Programming and openAICreating a meal generator application with SAP Build, Cloud Application Programming and openAIIngredients in, meal suggestions out, assembled from BTP services plus OpenAI and Google APIs. A small application built for the pleasure of it, and useful here as the plainest example of CAP holding the middle of a generative flow.former_member793421, published 2023-07-17
Custom Joule Agent for SAP Ariba SLP - Building an AI Agent for Supplier Registration ApprovalCustom Joule Agent for SAP Ariba SLP - Building an AI Agent for Supplier Registration ApprovalBuilds a Joule Studio agent that reviews SAP Ariba SLP supplier registration tasks: four custom skills bind to Ariba's API (pending tasks, task detail, questionnaire answers, post a decision), each needing a precisely configured BTP destination and action, and the agent's own Expertise, Instructions and Additional Context sections carry the domain knowledge, the step order, and the scoring rubrics that decide approve, deny or deny-with-resubmit. The author contrasts this with an earlier hand-wired flow on SAP Build Process Automation, where every connection, variable and error path had to be designed and wired manually.Giancarlo-Martinez, published 2026-04-07
Decision Logic Modernization in SAP Integrations: Using SAP-RPT-1 for Intelligent Routing DecisionsDecision Logic Modernization in SAP Integrations: Using SAP-RPT-1 for Intelligent Routing DecisionsWalks through embedding SAP-RPT-1 — SAP's foundation model for classification and regression over tabular ERP data, hosted on SAP AI Core — into a Cloud Integration flow that picks the optimal 3PL logistics partner for an outbound delivery. The iflow sends historical deliveries from SAP HANA Cloud plus the new delivery as context rows to the model's in-context learning, with no training step, and routes on the returned prediction and confidence score, the mechanism predictive models's core coverage describes for SAP-RPT-1. The author is explicit that SAP-RPT-1 differs from general-purpose language models trained on text, which keeps this apart from an LLM-integration scenario.arunmaarirajha_kv, published 2026-02-16
Don't Wait for SAP: Unlocking MCP Servers in BAS Right NowDon't Wait for SAP: Unlocking MCP Servers in BAS Right NowA workaround post with a grievance behind it: MCP servers were promoted heavily at SAP TechEd, most IDEs support them, and Business Application Studio limits you to Joule. This is how to run them there anyway. Worth reading as evidence of where the tooling gap sits rather than only for the recipe, which by nature has a shelf life.published 2025-11-27
Elevating Data Privacy in SAP CAP based GenAI Applications with CAP LLM PluginElevating Data Privacy in SAP CAP based GenAI Applications with CAP LLM PluginThe question underneath the enthusiasm: what leaves your landscape when a prompt goes to a model. The plugin's answer is to anonymise the sensitive fields through HANA before the prompt is sent, and this is the post that explains why that is the design rather than an option.AkashAmarendra, published 2024-02-02
Enhancing Business Processes with SAP BTP AI in SAP Integration SuiteEnhancing Business Processes with SAP BTP AI in SAP Integration SuiteWalks through a post-exit iflow in SAP Integration Suite that calls an LLM through SAP AI Core's Generative AI Hub to turn a customer's free-text return comment into one of a fixed set of SAP rejection-reason codes, so an inbound ORDERS05 IDoc carries a decision (E1EDP01-ABGRU) the ERP can act on without pausing for manual review. The worked example is a Commerce Cloud returns flow into S/4HANA; the piece argues the same bounded-classification pattern fits other narrative fields — delivery-exception remarks, expense-claim justifications — where the cost of an LLM call is repaid by removing a human review step, and points to a colleague's post on the Generative AI Hub orchestration workflow for the guardrailing (prompt templating, data masking) it only names.arunmaarirajha_kv, published 2025-12-15
Enhancing Enterprise Applications: AI-powered User Experience with SAP CAP AI PluginEnhancing Enterprise Applications: AI-powered User Experience with SAP CAP AI PluginStarts from the blank form nobody wants to fill in, and asks what an enterprise application should do about it. The AI is in service of that rather than the subject of it.published 2026-04-29
Enhancing Unit Testing in SAP CAP Java Applications with GitHub CopilotEnhancing Unit Testing in SAP CAP Java Applications with GitHub CopilotBuilt on SAP's own CAP Java unit-testing guide, and the question is narrow: how much of that does an assistant actually write for you. The author's own getting-started post is the one to read first.Anjali_Pathak, published 2025-09-04
Evaluating SAP’s new MCP servers: UI5, CAP, and Fiori tools in practiceEvaluating SAP’s new MCP servers: UI5, CAP, and Fiori tools in practiceSomeone trying SAP's three new MCP servers rather than repeating the announcement. It sets the official positioning first — MCP as the bridge from coding assistants to SAP tooling across Cursor, Windsurf, Copilot, Cline and Claude Code, with best-practice scaffolds and BTP-aligned guardrails — and then reports what using them is actually like. The rare kind of post that tests a vendor claim.published 2025-09-04
Event Driven SAP CAP on Kyma with Agentic AI and UI Auto RefreshEvent Driven SAP CAP on Kyma with Agentic AI and UI Auto RefreshA prototype, described as one: a plain CAP application made to react to external events on Kyma, with an agent in the loop and the UI refreshing itself rather than being reloaded. Short — it reports what was built and why, not how to rebuild it.Shahid, published 2025-12-01
Explaining SAP Joule for HR Business Users & Functional Consultants.Explaining SAP Joule for HR Business Users & Functional Consultants.Written for HR business users and functional consultants, this walks through how SAP Joule is provisioned on SAP BTP and wired into SuccessFactors: the Joule instance sits in a BTP subaccount, SAP Build Work Zone is created alongside it, and Identity provisioning syncs users from SuccessFactors into Build Work Zone while Cloud Identity Services authenticates the launch through an IAS tenant. It lists five prerequisites for the connection — a BTP global account, a Joule entitlement, Cloud Identity Service and SuccessFactors admin access, and the right personas — and notes that running BTP's booster adds the Joule permission to the SuccessFactors user's profile.santanuray_learner, published 2025-03-23
From Strategy Doc to Runtime Rule: Embedding SAP AI Standards into Claude CodeFrom Strategy Doc to Runtime Rule: Embedding SAP AI Standards into Claude CodeAn experiment in treating published engineering standards as machine-readable instructions an agent follows while it works, rather than as documents somebody is supposed to have read — hooks and skills wired so the rule applies at the moment code is written. The disclaimer is emphatic and worth carrying: a personal exploration, not an SAP product, not an endorsed approach, and readers are told to verify applicability through official channels. Read as a shape for the idea, not as a standard to adopt.ZYT, published 2026-06-25
From Zero to Fiori: Building SAP Apps with AI Agents (And Why I Use Markdown Files Instead of MCP)From Zero to Fiori: Building SAP Apps with AI Agents (And Why I Use Markdown Files Instead of MCP)Eleven entities and four Fiori apps in forty-five minutes, orchestrated rather than typed — and the author is careful to say it is a base to develop from, not something ready to ship. The markdown-files-as-instructions method is the transferable part.michal_majer, published 2025-12-10
GenAI Mail Insights - Leveraging the generative AI hub in SAP AI Core to improve customer supportGenAI Mail Insights - Leveraging the generative AI hub in SAP AI Core to improve customer supportA sample application rather than an explainer, and the author says so in the opening — enough talking, here is something that runs. Incoming support mail summarised and categorised through the generative AI hub in AI Core.martinfrick, published 2023-11-15
Generative AI Hub using Azure OpenAI GPT-4Generative AI Hub using Azure OpenAI GPT-4The technical half of a two-part post: a SAP Build Process Automation flow watches a support inbox, saves each incoming email's attachments and content, and hands the data to a custom Flask service that submits a service order into SAP S/4HANA. That service reaches two models through SAP AI Core's Generative AI Hub: Azure OpenAI's gpt-4-32k extracts the purchase date, model number, contact details and problem description from the email text, and LLaVA-1.6 describes the attached photos, so the JSON payload sent to the OData service-order and attachments APIs is assembled from both before the order is created.Jonathan-Kong, published 2024-03-15
Github Copilot VSCode - My Own SAP Development RulesGithub Copilot VSCode - My Own SAP Development RulesOne developer's rule files for Copilot, split by concern rather than kept as one prompt: CAP backend rules, UI5 frontend rules, Jest testing rules and Bruno collection rules, each with a scope narrow enough that an agent cannot read it two ways. The CAP file covers reusable types, managed data, soft-delete behaviour and service conventions; the UI5 file covers naming, view constraints and where annotations may live. It is the rule-file half of agent guidance rather than the skill half — nothing is packaged or published, and the value on offer is the shape of the split.radu_simen, published 2026-02-05
Give Your AI Agent Some Tools: Introducing the UI5 MCP ServerGive Your AI Agent Some Tools: Introducing the UI5 MCP ServerAnnounces @ui5/mcp-server, SAP's open-source MCP server for UI5 development, and walks through its initial six tools. get_project_info, get_api_reference and run_ui5_linter (which applies UI5 linter fixes) read the project's own version, manifest and code rather than an LLM's training data, which is what agent access to your code explains. create_ui5_app scaffolds a new JavaScript or TypeScript project, standalone or inside an existing CAP application, from templates with pre-configured OData model setups, which is generators.published 2025-09-03
HANA Cloud’s VECTOR EMBEDDING in CAP and Comparison with OpenAI EmbeddingHANA Cloud’s VECTOR EMBEDDING in CAP and Comparison with OpenAI EmbeddingTwo ways to produce the same embedding, run side by side: HANA Cloud's own VECTOR_EMBEDDING function against Azure OpenAI through the CAP LLM plugin. The CDS side is short — an element of type cds.Vector maps to REAL_VECTOR on deploy — so what remains is the comparison, which is the thing you cannot get from either product's documentation alone.lalitmohan, published 2025-04-09
How Redwood Software and SAP are shaping the next era of automation with Joule StudioHow Redwood Software and SAP are shaping the next era of automation with Joule StudioRedwood's Field CTO describes a tech preview where an SAP Basis administrator tells SAP Joule in natural language to pause background jobs and dependent Integration Suite iFlows for unplanned system maintenance; Joule acts as a control tower, triggering a pre-approved RunMyJobs workflow and asking for approval before the restart proceeds. The integration is built by publishing RunMyJobs operations to the SAP Business Accelerator Hub, securing access through SAP BTP with API keys and role-based permissions, and combining those actions into a skill inside Joule Studio's low-code design canvas.gmblom, published 2025-11-02
How to Connect Claude Code to ABAP with Zero-Config MCPHow to Connect Claude Code to ABAP with Zero-Config MCPWalks through wiring Claude Code, via its VS Code extension, to a live SAP system through an ABAP remote-filesystem extension built by Marcello Urbani and its built-in MCP server — a single toggle rather than a hand-rolled Node.js setup — so the agent searches, reads, writes, activates and assigns transports for ABAP objects over the same ADT REST API Eclipse uses, instead of guessing at tables and function modules it has never seen. The demo carries one plain-English prompt through to a real, activated ABAP program on a live S/4HANA system, including a transport-request dialog Claude worked through on its own.Nibedita, published 2026-07-05
How to Reduce Prompt Token Costs Using Toon = Save MoneyHow to Reduce Prompt Token Costs Using Toon = Save MoneyToken spend treated as a running cost rather than a detail, and TOON as the lever. Companion reading to the CAP adapter for the same format that is indexed here.Yogananda, published 2025-11-12
How to Reduce Prompt Token Costs Using Toon = Save Money
LLM integration changed in @cap-js/ai 1.0.0, 2026-04-28. Affects A recipe, Runnable code.
How to use Cloud SDK for AI in an existing CAP NodeJS Project in CommonJSHow to use Cloud SDK for AI in an existing CAP NodeJS Project in CommonJSA dependency that is ESM-only inside a project that is CommonJS, and the author's judgement that converting the project was too risky. What follows is the esbuild workaround, which is the honest answer when the ecosystem has moved and your codebase has not.Jacky_Liu1, published 2025-08-01
Integrate CAP application as outbound channel for SAP Document AIIntegrate CAP application as outbound channel for SAP Document AIDocument AI will call you back when extraction finishes, and the callback is where this goes wrong: the CAP application has to accept an unauthenticated POST from outside without dropping CSRF protection for everything else. The answer is a middleware hooked into the CAP bootstrap, and the post spends its length on the token lifecycle rather than on the extraction.sdeissenboeck, published 2026-04-22
Integrate Document Information Extraction into UI5 applicationIntegrate Document Information Extraction into UI5 applicationUploading an invoice from a UI5 application and getting the extracted fields back on screen, with a destination pointing at the Document Information Extraction API and a Refresh button polling until the job finishes. The polling is the honest part: extraction is asynchronous, and the post does not pretend otherwise. From 2022, so the service has since been renamed and the API moved, but the shape — upload, poll, map the result — is the shape it still is.published 2022-05-31
Integrating a Custom AI Model into SAP CAP Using AI LaunchpadIntegrating a Custom AI Model into SAP CAP Using AI LaunchpadYour own model rather than a hosted one: deployed to AI Core, made callable through AI Launchpad, then reached from CAP. The case a lot of companies ask about and few posts cover.egeAksoyek, published 2026-03-20
Integrating a Custom AI Model into SAP CAP Using AI Launchpad
LLM integration changed in @cap-js/ai 1.0.0, 2026-04-28. Affects Runnable code.
Integrating SAP Document Information Extraction (Document AI) with SAP CAP – Step by StepIntegrating SAP Document Information Extraction (Document AI) with SAP CAP – Step by StepThe forward direction, in full: a PDF or scan arriving at a CAP service, sent to Document Information Extraction, and the fields coming back into the model. Long, and step-by-step in the literal sense — the service binding and the request shapes are all written out.furkan5, published 2025-10-09
Joule for Developers with SAP BTP ABAP Environment-Setup GuideJoule for Developers with SAP BTP ABAP Environment-Setup GuideA step-by-step setup guide for SAP Joule for Developers, ABAP AI capabilities under its Q2 2026 limited-promotion licence: creating a BTP subaccount, adding ABAP environment and HANA compute-unit entitlements, enabling Cloud Foundry, configuring trust to Cloud Identity Services, creating the ABAP environment instance and assigning the developer role, then pointing ABAP Development Tools for Eclipse at the new system. It walks through the resulting Joule chat, predictive code completion, explain, ABAP Unit and CDS test-generation features inside a newly created ABAP Cloud project.YASHLAL, published 2025-09-11
Joule Studioがリリースされたので早速CAPアプリを自然言語で操作するカスタムスキルを構築してみたJoule Studioがリリースされたので早速CAPアプリを自然言語で操作するカスタムスキルを構築してみたA walkthrough of building a custom Joule Studio skill on a CAP bookshop app: cds add sample and cds add mta scaffold the project and its deployment descriptor, cds compile srv/ --to xsuaa generates the role template behind the @requires: 'admin' check on AdminService from the SAP Authorization and Trust Management service (XSUAA), and mbt build packages the app for deployment to the SAP BTP, Cloud Foundry Runtime. The skill reaches the deployed OData API through the SAP Destination service, configured with the OAuth2 Client Credentials grant using the client ID, secret and token endpoint from the app's XSUAA service key, so Joule answers a natural-language question about a book by its ID.takayuki_tanaka, published 2025-07-30
Major New Version of the hana-cli: How It Was Built with the Help of AI (and a Lot of Human Review)Major New Version of the hana-cli: How It Was Built with the Help of AI (and a Lot of Human Review)More features in two months than the previous two years — and the sentence after that is the reason to keep it: quality still needed the human review, and the post is about the rough edges rather than the headline. A maintainer reporting on their own process.thomas_jung, published 2026-03-11
Michael Jackson: AI Cognitive Pipeline on SAP BTP, SAP CAP, ElevenLabs, Claude, HANA DB, SolaceMichael Jackson: AI Cognitive Pipeline on SAP BTP, SAP CAP, ElevenLabs, Claude, HANA DB, SolaceA pipeline that listens to a song, identifies the historical events it references, retrieves knowledge about each and builds an emotional arc across the whole track. Not an enterprise use case, and useful precisely for that: the plumbing — CAP, HANA, Solace, Claude, ElevenLabs — is doing something the vendor demos never ask of it.Shahid, published 2026-05-18
Multi-modal RAG Proof of Concept: facilitating tech supportMulti-modal RAG Proof of Concept: facilitating tech supportA report on a customer proof of concept rather than an implementation guide — there is no code in it. The reason it is here is the architecture paragraph: CAP holds the backend and the use-case logic, the LLM plugins and the SAP Cloud SDK for AI sit inside it, and gpt-4o is one of two nodes in a small langgraph. It opens with a disclaimer that SAP's own Grounding service is due to gain multi-modal features, which dates the whole thing on purpose.maxlienhardt, published 2025-06-03
Out-of-the-Box Document Grounding in SAP AI Core: RAG with SAP Help PortalOut-of-the-Box Document Grounding in SAP AI Core: RAG with SAP Help PortalWalks through SAP AI Core's document grounding: a default 'help.sap.com' data repository that is already grounded, queried either directly through /retrieval/search after labelling a resource group for grounding, or through the orchestration service's grounding_module_config paired with llm_module_config and templating_module_config to inject the retrieved chunks into a prompt. Shows the orchestration service as a unified interface for swapping LLM providers by changing a configuration parameter rather than application code.Joni, published 2025-04-15
Prompt-Driven Development: Building Full-Stack SAP CAP Apps from User StoriesPrompt-Driven Development: Building Full-Stack SAP CAP Apps from User StoriesA user story in, a scaffolded full-stack CAP application out, through SAP Build Code and Joule. The question it is actually asking is how much of the foundational code is worth generating, and it answers by generating all of it.AnuradhaDhingan, published 2025-12-11
RAG with SAP HANA Cloud Vector Engine, GenAI Hub & CAPRAG with SAP HANA Cloud Vector Engine, GenAI Hub & CAPThe end-to-end version: a CAP service exposing the vector engine and the AI hub behind a couple of endpoints, answering where a CodeJam is on a given date. It has aged in a way the author has marked in the page itself — the section on the CAP LLM plugin now carries "(Outdated)" in its own heading — so read the embedding preparation and the retrieval shape, and check the plugin part against the package.KevinR, published 2024-05-21
SAP Agentic AI in Practice: Building the SAP Exception Log Triage Agent (Part 3 of 6)SAP Agentic AI in Practice: Building the SAP Exception Log Triage Agent (Part 3 of 6)Part 3 of a six-part series builds a router agent that classifies incoming SM21 system log errors and SM37 job failures, delegates each to a specialized sub-agent built with LangGraph's create_react_agent, and correlates findings across both logs into a single severity score and escalation list. State moves through a typed dict shared between the router and its sub-agents, with tools that query SAP HANA tables directly; a reactive on-demand mode sits alongside a scheduled monitoring loop that compares error counts to a baseline and escalates automatically past a threshold. The router-plus-sub-agent split carries forward to Part 6, where the same router coordinates the assessment agents built in the series' other parts.DEEPA_DORAIRAJ, published 2026-04-06
SAP AI Services - DOX - Gen AI with SAP CAP Plugin - Part 3SAP AI Services - DOX - Gen AI with SAP CAP Plugin - Part 3Building on Reusable components for CAP with cds-plugin by Daniel Schlachter, this part walks through a custom CAP plugin — a cds-plugin.js plus a lib_cap_dox.js helper — that authenticates against SAP's Document Information Extraction (DOX) service and calls its schema and job-status APIs to fill an entity from extracted document fields. It covers reading the service key from Cloud Foundry (cf service-key) for the OAuth token endpoint, and dynamically mapping DOX's header and line-item output onto CAP entity properties.sabarna17, published 2024-06-11
SAP Fiori Tools Update – First Release of the SAP Fiori MCP Server for Agentic AISAP Fiori Tools Update – First Release of the SAP Fiori MCP Server for Agentic AIThe release announcement for the Fiori MCP server, placed as the step after the Project Accelerator: an assistant can create and edit Fiori applications directly rather than describing what a developer should do. The vendor's own framing, so read it beside the independent evaluation of the same servers rather than instead of it.published 2025-09-03
SAP JOULE & ME : My First JOULE Skill in SAP EHSM-Incident Management Without CodingSAP JOULE & ME : My First JOULE Skill in SAP EHSM-Incident Management Without CodingWalks through building a transactional Joule Skill in Joule Studio, classic edition without writing code: activating an EHS Incident OData service in SAP S/4HANA, wrapping it as an Action Project with chosen input and output fields, then creating, saving and deploying the skill from those fields. Tested against a live system, the deployed skill lets a user create an EHS incident and list reported incidents through Joule's conversational interface or a configured button.Pardhasaradhi_Reddy_Chelikam, published 2026-01-05
SAP Joule implementation in an S/4HANA private cloud 3 system landscapeSAP Joule implementation in an S/4HANA private cloud 3 system landscapeWalks through enabling SAP Joule across a three-system S/4HANA Private Cloud landscape (DEV, QAS, PRD) rather than the common single-system setup: separate BTP subaccounts for the non-production systems, a shared Cloud Identity Services tenant, and catalogs and roles transported from DEV through QAS to PRD. Covers single sign-on for Joule by setting Microsoft Entra ID as the corporate identity provider in SAP IAS, so authentication flows through Entra ID without the user existing in the IAS store, plus principal propagation through the Cloud Connector into the production backend.Arunrajj, published 2026-01-21
SAP Joule: Invoice Agent for Faster Supplier Invoice Release in SAP S/4HANA Accounts PayableSAP Joule: Invoice Agent for Faster Supplier Invoice Release in SAP S/4HANA Accounts PayableWalks through building an Invoice Release Agent in SAP Joule: a custom OData service surfaces supplier invoices whose S/4HANA Flexible Workflow approval is overdue, the agent ranks them by invoice value, aging, payment tenor or a combined score, and a Joule Skill calls the standard SAP AP Invoice OData API to release them, re-prioritizing the remainder after each action. It sets out the detect-prioritize-act loop and the four ranking criteria in enough detail to rebuild the pattern, and leaves authorization, auditability and segregation-of-duty controls to the reader's own design.idc, published 2026-08-11
SAP-RPT-1.5 Is Now Generally Available: More Accurate Predictions, Better Explainability, What's NewSAP-RPT-1.5 Is Now Generally Available: More Accurate Predictions, Better Explainability, What's NewAnnounces general availability of SAP-RPT-1.5, the next release of SAP's foundation model for predictive models over tabular enterprise data: in-context classification and regression with no training step, now with stronger accuracy on high-cardinality columns, a maximum API batch of 512 rows (up from 128), and an "explain by example" mode that surfaces the historical rows that most influenced a prediction rather than ranking feature importance alone. Two variants ship, a default model and a -large model recommended past 100 columns or where accuracy is the priority, and the post previews a coming "tabular orchestration" workflow, targeted for general availability in August 2026, that is meant to select the relevant context rows from millions of historical records automatically.RanjeetKr, published 2026-08-14
Setting the right expectations around AI for code generation and getting past the inherent limitsSetting the right expectations around AI for code generation and getting past the inherent limitsWritten by somebody who has worked on AI since a thesis on multi-layer perceptrons, and it is about the limits rather than the promise — what transformer-based coding agents can and cannot be expected to do. An argument, not a walkthrough.dirk_roeckmann, published 2026-02-17
Teaching AI Agents Best Practices: A Skills Workspace for CAP DevelopmentTeaching AI Agents Best Practices: A Skills Workspace for CAP DevelopmentStates the gap this capability exists for more precisely than most: an agent already knows CAP well enough to generate models, handlers and deployments, but knowing a framework and following its current practice reliably are different things, because a model defaults to whatever it saw most of during training — which may be outdated, subtly wrong, or simply not how a given team works. Skills are offered as the closing mechanism, and the post describes a workspace pattern rather than a single file, with the architecture claimed to be framework-agnostic.daniel_schlachter, published 2026-06-09
The Future of ABAP is Here: VS Code ADT, Zero-Config MCP, and AI Co-pilotsThe Future of ABAP is Here: VS Code ADT, Zero-Config MCP, and AI Co-pilotsA walkthrough of ABAP Development Tools for VS Code's general-availability release: connecting to an on-premise or BTP ABAP system, editing classes, CDS and RAP objects, and turning on the extension's built-in ADT MCP Server. Enabled, it lets a co-pilot such as GitHub Copilot or SAP Joule for Developers, ABAP AI capabilities read code, trace dependencies, and run ABAP Unit and ATC checks against the real system rather than guessing from training data.lpodile, published 2026-06-01
UI5 AI Features library is now an npm PackageUI5 AI Features library is now an npm PackageThe release note for a demo turning into a dependency, and it is explicit about why that matters: the earlier version worked, but using it meant cloning the repo and copying both halves, which stops working the moment one of them changes. The post walks through what shipping the CAP plugin and the be.wl.ai control library in one npm version buys — a client and server contract that cannot drift — then lists the eleven controls by group, shows the two-line configuration that activates each half, and notes that this version is actually deployed on BTP behind both a standalone approuter and Work Zone. It closes on the demo repository, written with no library source in it as the test that the package stands alone.published 2026-08-31
UI5 AI Features library is now an npm Package
cds 8, line ended. Affects Runnable code.
UI5 Plugins for Coding Agents: Now Supporting GitHub CopilotUI5 Plugins for Coding Agents: Now Supporting GitHub CopilotUI5/plugins-coding-agents renames itself from "UI5 Plugins for Claude", since the plugin concept — skills, MCP server, guidelines — was always agent-agnostic, and with v0.1.3 adds GitHub Copilot support alongside Claude Code through Awesome GitHub Copilot. Three skills join the ui5 plugin: ui5-best-practices-integration-cards for UI Integration Card manifest and binding rules, ui5-best-practices-opa5, which uses a TestRecorder to inspect the running app's control tree and generate waitFor snippets, and ui5-best-practices-tables, a selection guide across UI5's table controls. Installing the skills alone, for an agent that reads neither marketplace, still leaves @ui5/mcp-server to be set up by hand.published 2026-06-25
Use Free Tier to Create a Service Instance for SAP Document AIUse Free Tier to Create a Service Instance for SAP Document AIFour steps in the SAP BTP cockpit that end with a service key for SAP Document AI: open the cockpit, check the subaccount's entitlements and add the service on the free tier plan if it is not listed, create the instance, then create the key. It names the plans to use in production instead, blocks_of_100, embedded_edition and premium_edition, and stops at the credentials, before any document is uploaded.
Use Free Tier to Subscribe to SAP Document AI Basic UIUse Free Tier to Subscribe to SAP Document AI Basic UIEight steps from an entitled subaccount to the SAP Document AI basic UI open in a browser, and most of them are identity work rather than document work: getting a tenant for Cloud Identity Services, which the basic UI requires, activating the account and establishing trust with the subaccount, then subscribing, creating a user and assigning the Document_Information_Extraction_UI_Templates_Admin role collection. Using the UI to read a document is the subject of Use Machine Learning to Extract Information from Documents with the SAP Document AI Basic UI, which this tutorial names as what to read next.
Using BTP Document Extraction Service into actual App developmentUsing BTP Document Extraction Service into actual App developmentWalks through calling SAP Document AI's REST API directly: getting a client-credentials bearer token from the service key's UAA, then POSTing to /document/jobs with a file and an options body naming the document type and the header fields and line items to extract (paymentTerms, documentDate, taxId, description for an invoice), and polling the returned job id until the status resolves. Covers the trial-account booster and its own UI for uploading a document and testing extraction before moving to Postman and a small Python script that lists jobs over the same bearer token.Ace_D, published 2024-07-31
Using Claude for SAP ABAP development on RFC-only / SAProuter systems (even ECC R/3)Using Claude for SAP ABAP development on RFC-only / SAProuter systems (even ECC R/3)vibing-steampunk gives Claude read, search, edit and check access to ABAP source over ADT's REST API, but some SAProuters permit only SAP's native RFC and DIAG routes and block raw HTTP to the ICM, so that link can't reach them even though Eclipse ADT can. Eclipse gets through because it tunnels ADT over RFC through the standard SADT_REST_RFC_ENDPOINT function module instead of HTTP, a path the post traces by capturing a live Eclipse session. adt-rfc-bridge reproduces that tunnel as a local HTTP-to-RFC proxy built on PyRFC, put in front of vsp, and the author reports it working on both S/4HANA and classic ECC/R/3 systems where Eclipse ADT already connects.enrico_andreoli, published 2026-06-09
What a Second Document AI Workshop Taught Me About GovernanceWhat a Second Document AI Workshop Taught Me About GovernanceFrom questions raised at a second SAP Document AI workshop: the retention period for extracted data is a setting in the service's administration rather than a fixed property, with the source file deleted after processing and the decommissioning period for the extracted data configured to the customer's own policy. It also draws a boundary readers kept merging: Document AI extracts across languages but does not translate, so turning a document into a reviewer's own language is a separate step, pointing on BTP at SAP Translation Hub.Nicolas_BacaStorni, published 2026-08-25
What an AI infra engineer sees when opening SAP's AI stack (1/3): the model gatewayWhat an AI infra engineer sees when opening SAP's AI stack (1/3): the model gatewayA first look at SAP AI Core's Generative AI Hub from someone who builds gateways outside SAP for a living: the orchestration service harmonizes provider calls onto one API (a model name string switches providers, and SAP Note 3437766 carries the current model list, token rates and deprecation dates), runs a fixed, non-reorderable module pipeline — templating, masking through SAP Data Privacy Integration, grounding, content filtering, then the model call — and retries down an ordered fallback list whose entries can each carry their own model and rules. It places @sap-ai-sdk/orchestration among the official JavaScript, Java and Python SDKs, and notes SAP's own LiteLLM provider as a way to put a different gateway in front of it.amishkush, published 2026-09-30
What Happens to Your Data When You Enable SAP's AI Features?What Happens to Your Data When You Enable SAP's AI Features?Traces where a prompt goes when Joule, the Generative AI Hub or the orchestration service calls a third-party model through SAP AI Core: the prompt and the business context around it travel to a model such as GPT-4o, Claude or Gemini for inference, and masking through SAP Data Privacy Integration is an optional orchestration module rather than a default, so with no masking block in the @sap-ai-sdk/orchestration client config nothing is masked. On the masking options, which the author says he confirmed with SAP AI Core product management, anonymization discards the original value and pseudonymization keeps it reversible; DPI recognizes person names, email addresses and phone numbers, plus custom entities defined by regex, which leaves commercially sensitive non-PII such as a revenue forecast or a project codename to pass through unless someone writes a pattern for it, and whether that data is covered at all is one of three answers the post marks as still pending. The "no training" assurance for third-party providers is read as contractual rather than technical, and models hosted and managed by SAP, Mistral among them, are named as a path other than a US-hyperscaler-hosted one.jaripie, published 2026-04-23
What’s new in Mobile development kit client 26.9What’s new in Mobile development kit client 26.9This Mobile development kit client 26.9 release note explains that @sap/mdk-mcp-server is now reachable from SAP Business Application Studio's AI chat, giving an assistant real knowledge of the MDK metadata schema rather than generic code generation. With it an assistant can scaffold an MDK project, generate pages, actions, rules, i18n, services and styles into it, iterate on it conversationally, and answer schema and client-API questions inline through mdk-docs.published 2026-09-27
Why Our First Document AI Exercise Was a Résumé, Not an InvoiceWhy Our First Document AI Exercise Was a Résumé, Not an InvoiceWorking through a SAP Document AI workshop, the author explains why its exercises teach extraction on a résumé before an invoice: a résumé has no stable layout to map fields against, so it forces the point that the tool extracts from a written description of a schema rather than from position-matched templates. Describing the schema is shown to carry real judgment — what a missing end date should become, what a vague field name like "number" costs the model, who in a company should decide these things — and the piece argues that preparing for a project is chiefly a business task of writing down knowledge that otherwise stays in people's heads.Mariano_BacaStorni, published 2026-09-03
[Part - 1] Enrich CAP based Services with Behaviors using Annotations[Part - 1] Enrich CAP based Services with Behaviors using AnnotationsWalks through CDS annotations that add behaviour beyond CRUD: @readonly and @insertonly take away write, update or delete on an entity or element, each shown with the OData metadata it generates. @mandatory, @assert.unique, @assert.integrity, @assert.format and @assert.range then enforce input checks that @sap/cds runs on write, with the SQL or HANA constraint @assert.unique compiles to and the error code each rejection returns. It names @restrict and @requires but defers them, calling authorization too large a topic for this post.published 2023-01-28
#SAPCAP: Win Customer Trust using Data Privacy and Protection Services on BTP - Part 1#SAPCAP: Win Customer Trust using Data Privacy and Protection Services on BTP - Part 1First of a three-part series on designing a CAP application on BTP that uses the platform's data privacy services, and this part is the vocabulary before any of it: personal data, the rights a data subject has under GDPR, and the data controller and processor distinction, worked through an order-confirmation SMS example. It names four BTP services: SAP Personal Data Manager, SAP Data Retention Manager, SAP Data Privacy Integration and SAP Audit Log service. Only the first is described, as a service running in the Cloud Foundry environment that finds data subjects across one or more applications and services, makes requests on an individual's behalf about their personal information and forwards them for handling, and notifies individuals which of their personal information is being used or sends them a copy of their record by email; the CAP-side annotations and PDM's own application features follow in Part 2 and Part 3.Ajit_K_Panda, published 2023-03-18
#SAPCAP: Win Customer Trust using Data Privacy and Protection Services on BTP - Part 2#SAPCAP: Win Customer Trust using Data Privacy and Protection Services on BTP - Part 2Walks through wiring a CAP service to SAP's Personal Data Manager (PDM) on BTP: entity, key and field-level @PersonalData annotations that mark data subjects and personal fields, the @PersonalData.IsPotentiallyPersonal / IsPotentiallySensitive distinction that drives audit logging, and the @Communication.Contact annotation PDM needs to search for a data subject. Covers the xsuaa trust arrangement and service binding that let the standalone PDM application call back into the CAP service to read and manage that data. Second of a three-part series; the annotation model it demonstrates is CAP's own mechanism for data privacy compliance, exercised against a sample 'Game Shop' application.Ajit_K_Panda, published 2023-03-18
#SAPCAP: Win Customer Trust using Data Privacy and Protection Services on BTP - Part 3#SAPCAP: Win Customer Trust using Data Privacy and Protection Services on BTP - Part 3Third of a three-part series, this covers the UI side of SAP's Personal Data Manager (PDM) once it is subscribed and wired to a CAP application: a Customer Service Representative searches for a data subject, views the personal data the application's annotations expose, and requests correction, deletion or export on their behalf, while an Operators Clerk processes those requests through to completion. PDM stores none of the personal data itself, only the requests and access logs, which an administrator downloads through the separate Data Transport app. It builds on the annotation model the first two parts introduce, so what it demonstrates is PDM's own delivered UI rather than anything a CAP application must build itself.Ajit_K_Panda, published 2023-03-18
🚀 Introducing SCIM API for SAP Sales & Service Cloud v2: Seamless User Sync between Source & Target🚀 Introducing SCIM API for SAP Sales & Service Cloud v2: Seamless User Sync between Source & TargetSAP Sales & Service Cloud v2's SCIM API is now generally available by default, having moved out from behind a feature toggle before 1 November 2025. It runs on SAP Identity Provisioning Service, which pushes user records from SAP Identity Authentication Service into the target system over SCIM 2.0's GET/PUT/PATCH /scim/v2/Users endpoints, gated on an employee record already replicated from S/4HANA, SuccessFactors or ERP. This version adds PATCH operations, provisioning of application-specific groups as business roles, and cursor-based pagination beside the existing startIndex/count scheme, and no longer needs SAP Cloud Integration in the path.Yogananda, published 2025-08-30
An approach to secure multiple integrated SAP CAP java applications with a common XSUAA service instanceAn approach to secure multiple integrated SAP CAP java applications with a common XSUAA service instanceOne XSUAA instance across several CAP Java applications that call each other, rather than one per application. Short, and written from inside SAP Labs as something the author tried — the value is the shape of the arrangement, not a walkthrough.sreanik_dhanyakumar2, published 2022-09-14
Authorization Management Service in SAP Cloud Identity ServiceAuthorization Management Service in SAP Cloud Identity ServiceStates the direction of travel plainly — BTP moving authorization management from XSUAA to AMS inside SAP Cloud Identity Service — and then explains what a policy is, which is the unit that replaces a scope. Split between authorization for Cloud Identity itself and for custom business applications, and it is the concept post the CAP Java write-up refers back to.kevin_li, published 2024-10-17
Authorization management with OpenSearch's Document Level Security - SAP Cloud LoggingAuthorization management with OpenSearch's Document Level Security - SAP Cloud LoggingWhere the predecessor SAP Application Logging service reused CF space permissions for read-only access, SAP Cloud Logging integrates with SAP Cloud Identity Services (IAS) and controls per-document visibility through OpenSearch's Document Level Security: an IAS group becomes a backend role, mapped to an OpenSearch role that carries a DLS query filter, so a search request only ever returns documents whose indexed field (space_name, organization_id, or another keyword field) matches what that role's filter allows. It walks through fixed per-space roles, a shared multi-space role using a terms query, and a single dynamic role that substitutes ${user.roles} into the filter so the match is against the caller's own groups, then lists operational pitfalls — wildcard index patterns breaking Dashboards, DLS roles that also hold write access creating log entries nobody can read back, and match queries against a .keyword field being non-deterministic where term queries are exact.Hariharan-Gandhi, published 2025-11-24
Automating User Offboarding in SAP BTP Across Multiple Subaccounts with PowerShell & BTP CLIAutomating User Offboarding in SAP BTP Across Multiple Subaccounts with PowerShell & BTP CLIA PowerShell script that pairs with the SAP BTP command line interface to delete a list of user e-mails from every trusted identity provider, sap.default included, across every subaccount the caller can reach, writing a timestamped log of each attempt. It automates the offboarding half of identity provisioning — getting a user out of every system that holds them once they leave — by chaining btp list accounts/subaccount, btp list security/trust and btp delete security/user rather than going through a provisioning job or the SCIM API.shasankgupta024, published 2026-01-01
BTP CAP : Custom plugin to separate generic change log capture logicBTP CAP : Custom plugin to separate generic change log capture logicWalks through building a custom [CAP](ecosystem:cap) plugin that centralises change-log capture: on cds.once('served') it collects entities annotated @audit, then hooks srv.before('UPDATE') to read the existing record, diff it field by field against the incoming payload, and record old/new values with the user and timestamp. It also documents a cds build failure packaging the plugin's own directory into gen/srv for MTA deployment, fixed by adding it as a copyfiles build-parameter step in mta.yaml.sreehari_vpillai, published 2023-05-10
Building Custom Authentication in SAP CAPBuilding Custom Authentication in SAP CAPpublished 2025-10-25
Building Custom Authentication in SAP CAP
cds 9, maintenance until 2027-06. Affects A recipe.
Building Secure SAPUI5 Applications: Best Practices for DevelopersBuilding Secure SAPUI5 Applications: Best Practices for DevelopersA developer-facing rundown of secure coding habits for SAPUI5 apps: typed bindings and custom formatters to reject bad input before it reaches a handler, encodeHTML() instead of rendering untrusted HTML, keeping tokens and URLs out of local and session storage, and CSRF token handling on the ODataModel. It sets up linting with ESLint and an eslint-config-ui5 rule set to catch unsafe DOM access, eval calls and unused imports as part of CI, alongside the same input validation instinct: reject invalid input early rather than trust the backend to catch it.Manisha_19, published 2025-12-10
CAP for nodejs安全的暴露接口练习CAP for nodejs安全的暴露接口练习Starting from the risk-management sample, the walkthrough adds an open ExternalAPI service beside the existing RiskService, then moves every security annotation into a separate service-auth.cds file: @requires: authenticated-user on one entity, role-scoped @restrict grants for RiskViewer and RiskManager on another. It tests the unprotected action locally with cds watch, calling it from Postman with the session cookie read out of SAP Business Application Studio's preview tab. It then deploys to BTP and reads Risks with a client-credentials OAuth token fetched from a service key of the cpapp-auth instance, after changing that entity's READ grant from RiskViewer to authenticated-user, which the post, citing capire's CDS-based Authorization page, describes as a grant for a technical user integrating systems rather than for access from a front end.ArthurYang, published 2024-12-10
CAP-JAVA implementation for Authorization Management Service (AMS)CAP-JAVA implementation for Authorization Management Service (AMS)Short and deliberately narrow: the author defers the concepts to kevin_li's post and writes only the CAP Java part — the development flow, designing the authorization model, and assigning and checking a policy. Read the other one first; this is the half that touches the code.Harvey_Yao, published 2024-12-27
CAPM Basics - Part 4CAPM Basics - Part 4Part 4 of a CAPM Basics series binds the deployed XSUAA and SAP HANA Cloud service instances with cds bind and runs the project against them from a laptop via cds watch --profile hybrid, the hybrid-testing loop @sap/cds-dk provides. It then restricts the service with @restrict (READ granted to a Viewer role, full access to Admin) and adds OData Capabilities restrictions plus @odata.draft.enabled so a Fiori elements client renders create, update and delete without UI code. It closes by adding a UI module with the SAP Fiori Generator, wiring an approuter via cds add approuter to forward the auth token, and updating the SAP Authorization and Trust Management service instance with the generated redirect URI before redeploying.archisman92, published 2025-05-10
CAPVAL: A project is bornCAPVAL: A project is bornThis second CAPVAL post announces CAPVAL version 2.0, made compatible with CAP v8 after breaking changes there, with the fix shown as a custom cds.middlewares.after error handler. It restates the plugin's @validation.message annotation alongside standard annotations such as @mandatory as the input validation mechanic the project builds on, and the release otherwise adds automated tests and release-automation GitHub Actions rather than new annotations.published 2024-08-26
Declarative Programming in CAP: Less Code, More ValueDeclarative Programming in CAP: Less Code, More ValueAn argument for annotations over handlers, made from the case where it is most obvious: repetitive validation logic that could be declared instead of written. Describes what you want rather than how to get it, and lets the runtime decide the how.published 2026-02-05
Dynamic authorisation with user attributes in SAP CAP and AMSDynamic authorisation with user attributes in SAP CAP and AMSThe same argument as the XSUAA-to-AMS piece, opened from a concrete failure: an acquisition puts 500 users on sales data restricted by division, and role-based access control answers it with Sales_Manager_EMEA, Sales_Manager_APAC and so on until the roles multiply past managing. Attribute-based authorisation replaces the set with one policy carrying a restriction, and the post walks through defining it in AMS against Cloud Identity Services. The clearest statement of role explosion among the three AMS pieces here.pedro_iranzo, published 2026-05-04
Effective from June 30th 2026 - XSUAA Deprecation of GET Method for OAuth Token RetrievalEffective from June 30th 2026 - XSUAA Deprecation of GET Method for OAuth Token RetrievalEffective June 30th 2026, the SAP Authorization and Trust Management service (XSUAA) deprecates the HTTP GET method for retrieving an OAuth access token from its /oauth/token endpoint, leaving only POST supported in line with RFC 6749. A client still requesting a token via GET with grant_type and credentials in the query string stops working after the cutover and must switch to a POST request with form-encoded body parameters.Yogananda, published 2026-06-14
Enabling Authorization Policies in SAP Cloud Identity Services - IAS with AMS/CAPEnabling Authorization Policies in SAP Cloud Identity Services - IAS with AMS/CAPAuthorization policies defined in Identity Authentication and consumed by a CAP application through AMS — the configuration half of the move away from XSUAA scopes, from the identity service's side rather than the application's.Yogananda, published 2024-12-27
Enabling Authorization Policies in SAP Cloud Identity Services - IAS with AMS/CAP
Authorization changed in CAP Java 3.7.1, 2025-01-30. Affects A recipe.
Extend SAP Cloud Application Programming Model(CAP) Validations with the CAPVAL PluginExtend SAP Cloud Application Programming Model(CAP) Validations with the CAPVAL PluginThe complaint first: the built-in annotations are good for data integrity and poor at telling the user what went wrong, and there is no way to reuse a rule. capval, the plugin the post announces, adds @validation.message alongside the standard annotations rather than replacing them, and @validation.handler for a check written as a class. Published in January 2024, before the 1.2.0 line the README now pairs with @sap/cds 8.0.0 and above; the two annotations it shows are the two the README still documents.published 2024-01-09
From XSUAA to AMS: Architecting S4HANA CAP Extensions with Policy-Based AuthorizationFrom XSUAA to AMS: Architecting S4HANA CAP Extensions with Policy-Based AuthorizationWhy scope-based authorization runs out, argued from enterprise extension work rather than from the documentation: XSUAA handles roles well, but real requirements are business-context restrictions — country, company code, organisational unit — and expressing those as scopes does not scale. The migration to policy-based authorization is presented as an architectural move for S/4HANA extensions rather than a configuration change.Avinash Vaidya, published 2026-05-27
Graph on Integration Suite: Simplifying Multi-API Data Retrieval with Unified Business Data GraphGraph on Integration Suite: Simplifying Multi-API Data Retrieval with Unified Business Data GraphA hands-on walkthrough of Graph, the API Management feature of SAP Integration Suite also called Business Data Graphs, which exposes several OData APIs as one connected data model behind a single OData V4 or GraphQL endpoint. It covers enabling the capability and its Graph.KeyUser and GraphNavigator.Viewer role collections, creating BTP destinations and a service key for an S/4HANA system, then building a Business Data Graph over the Sales Order and Business Partner APIs so a mirrored SoldToParty association returns both in one call, in place of the two OData requests a Cloud Integration Content Enricher would otherwise merge.published 2026-01-09
Guide to Process Automation APIs - Part I - Getting StartedGuide to Process Automation APIs - Part I - Getting StartedExplains how to call SAP Build Process Automation's REST and OData APIs directly: OAuth2 client credentials with a service key runs as the service, while a user token (OAuth2JWTBearer) runs as the calling person, which matters wherever an API records who acted — approving a task, or reading instances from a shared environment. Since the Public environment is deprecated as of the end of 2025, a call into any other environment also needs an environmentId query parameter.Dan_Wroblewski, published 2025-07-14
How to Access SAP Cloud Logging Service Dashboards Using IAS SAML AuthenticationHow to Access SAP Cloud Logging Service Dashboards Using IAS SAML AuthenticationWalks through wiring SAML 2.0 single sign-on between SAP Cloud Identity Services (IAS) and SAP Cloud Logging so its OpenSearch dashboards accept IAS logins instead of a service key: creating the SAML application in IAS, editing the instance's saml parameters (admin_group, idp.metadata_url, idp.entity_id, sp.entity_id), setting the matching entity ID and endpoints on the IAS side, and mapping an IAS group to the all_access role through a groups attribute. It also shows how to read a 403 on the dashboard as SAML login succeeding while the group-to-role mapping is still missing.Umezuki, published 2025-12-30
How to Check Fiori Apps Related Authorization Object MassHow to Check Fiori Apps Related Authorization Object MassA structured, table-driven method for mass-checking which authorization objects back a set of Fiori apps: map each Fiori App ID to its OData service, look up that service's hash in USOBHASH, then resolve the hash to its authorization objects (S_SERVICE, S_RFC, among others) in USOBTC. The author reports the method's limits in practice — apps built on a transaction code are already findable directly in USOBTC, and the same approach resolved only 5 of 300 Web Dynpro apps, which needed a manual catalog-and-hash workaround instead.MehmetSaidDemir, published 2025-10-07
How to Control the Visibility of CRUD and Custom Actions in Fiori Elements Based on AuthorizationHow to Control the Visibility of CRUD and Custom Actions in Fiori Elements Based on AuthorizationHiding Create, Edit and custom action buttons according to what the user may actually do — the join between the authorisation model and the annotations, which is where the two usually fail to agree and the UI offers something the service will refuse.published 2025-05-14
How to enable SAP Audit Log Viewer service to collect all Audit logs from BTP Services - Part 1How to enable SAP Audit Log Viewer service to collect all Audit logs from BTP Services - Part 1Walks through subscribing to the SAP Audit Log service's viewer app from the SAP BTP cockpit and creating a RoleCollection from the auditlog-management and auditlog-viewer role templates, assigned to a user or by a rule on the IDP's SAML assertion, to read audit logging events in a subaccount. The post's own update notes that a BTP release from 19 February 2026 removed the need for that role-assignment step. It also lists which Cloud Foundry services write audit log events, pointing to each service's own auditing page rather than detailing them here.Yogananda, published 2025-03-07
How to get authenticated user information with CAP in three different ways – Using the XSUAA APIHow to get authenticated user information with CAP in three different ways – Using the XSUAA APIThe third of three approaches the author sets out, and the one that returns the most: going to the XSUAA API directly rather than reading what CAP already put on the request. Depends on an earlier post for the project setup, so it starts mid-stream on purpose.ale_biagi, published 2022-07-18
How to handle “usernames”, “Global User IDs” and “external IDs” in your landscape?How to handle “usernames”, “Global User IDs” and “external IDs” in your landscape?Explains what a username, a Global User ID and a SCIM2 external ID each are and when to use them: the username is the mutable attribute a person authenticates with, the Global User ID is the correlation attribute SAP uses when the same user must be identified between the applications they are provisioned into, and the external ID is mutable, defined by the client and optional within SCIM2. Argues against deriving any of the three from personal data, because they appear in read-only log files and other traces, some applications do not allow an ID change at all, and DevOps staff with access to those logs would otherwise see personal data they are not allowed to see. Recommends generating values without personal data, in uuid format, for technical integrations such as SAML or OIDC flows and SCIM-based replication, and keeping attributes like an email or display name for logon aliases and for what a user interface shows; notes that Cloud Identity Services already generates the SCIM ID and Global User ID in uuid format for each record.1Gunnar, published 2023-09-12
How to implement SAP BTP Audit log service in a CAP ApplicationHow to implement SAP BTP Audit log service in a CAP ApplicationThe setup half: binding the BTP Audit Log service to a CAP application and getting the annotated path working, which is the step before anything custom becomes a question.KrishnaSharma7, published 2025-01-01
How to implement SAP BTP Audit log service in a CAP Application
@cap-js/audit-logging has been through 2 major lines since this was published: 0.9 (2025-06), 1 (2025-07). Affects A recipe.
How to Implement SAP Change DocumentHow to Implement SAP Change DocumentBuilds SAP's Change Document framework on two custom tables, ZZCUSTOMER and ZZCUSTOMER_BANK: creating the Change Document Object in transaction SCDO, then wrapping each INSERT, MODIFY and DELETE on the Z-tables together with a call to the generated WRITE method inside one ABAP class, so both commit in the same Logical Unit of Work. Because the generated method cannot read old values back from the database itself, the class reads them before the update and holds them in memory; a Managed RAP application skips this step by specifying the Change Document Object directly in its Behaviour Definition instead. This is the ABAP side of change tracking: a change document object logs who changed a field, and when, into CDHDR and CDPOS.Subhasree1, published 2026-07-09
How to Restrict CRUD Operations in SAP CAPM Using @Capabilities, @readonly and Test APIs with .httpHow to Restrict CRUD Operations in SAP CAPM Using @Capabilities, @readonly and Test APIs with .httpEntities are exposed with full CRUD by default, and this is how to take operations away again — @Capabilities for Insert, Update and Delete individually, @readonly for the blunt version. Tested with .http files rather than a UI, which keeps the check on the service.DeepaRagho, published 2026-05-22
Identity and Access Management in SAP: Navigating SSO Across Web and On-Prem LandscapesIdentity and Access Management in SAP: Navigating SSO Across Web and On-Prem LandscapesSAP Cloud Identity Services is the central identity interface for single sign-on across an SAP landscape: browser-based applications authenticate through SAML 2.0 or OpenID Connect, while applications reached over RFC rather than HTTP use Secure Login Client and Secure Login Service instead, since those web protocols do not apply there. That RFC path issues short-lived X.509 certificates from SCI-authenticated identities, carrying the same multi-factor authentication into on-premise access, with Kerberos tokens or local client certificates as alternatives.OxanaJ, published 2025-07-25
Implementing Custom Audit Logging in SAP CAP ApplicationsImplementing Custom Audit Logging in SAP CAP ApplicationsWhere the annotations stop. CAP logs personal-data operations automatically once a model is annotated; this is about the events that are not that — an unauthorised access attempt, a business action somebody wants a trail for — and what writing those yourself involves.gopalanand, published 2025-10-09
Information Map – Introduction Series: Graph in SAP Integration SuiteInformation Map – Introduction Series: Graph in SAP Integration SuiteIntroduces Graph, an enhancement to API Management within SAP Integration Suite that gives developers a single API onto an organisation's business systems, modelled as one semantically connected business data graph, later renamed API Composition. Splits the work between an administrator, who enables SAP BTP destinations to the backend systems and builds the business data graph, and a developer, who explores it in the Graph Navigator tool and builds an application against the resulting Graph API.published 2024-02-21
Insights of Cloud SDK, CAP, XSUAA, SSH and other BTP topics from 2021Insights of Cloud SDK, CAP, XSUAA, SSH and other BTP topics from 2021A year in review, and one section in it is the reason it is here: "CAP isn't the solution for everything" — the author's point being that a pure UI5 or Fiori application does not need a CAP service wrapped around it, and that an approuter or the HTML5 Application Repository may be the better answer. The XSUAA section is a complaint about complexity rather than a guide, which is also worth having on the record.dr_vup, published 2021-12-30
Integrate SAP Business Technology Platform audit logs with IBM Security QRadarIntegrate SAP Business Technology Platform audit logs with IBM Security QRadarWalks through pulling entries from the SAP Audit Log service for a Cloud Foundry subaccount, via its retrieval API and a service key downloaded from the SAP Authorization and Trust Management service, into IBM Security QRadar as a Universal Cloud REST API log source. A sample audit event, a data read event under audit.data-access, drives a custom QRadar DSM mapping event ID and category, then the walkthrough deletes a user from a Kyma role collection and shows the matching audit logging entry arrive in QRadar as an offense.TusharTrivedi12, published 2024-01-03
Integrating SAP Cloud Identity Services (Identity Authentication - IAS) with SAP Audit Log ViewerIntegrating SAP Cloud Identity Services (Identity Authentication - IAS) with SAP Audit Log ViewerWalks through wiring an Identity Authentication tenant of Cloud Identity Services into the SAP Audit Log service on SAP BTP, Cloud Foundry: from the tenant's Monitoring & Reporting tile, adding the target BTP subaccount's tenant ID and subdomain ties the two together, and after a 15-20 minute wait the resulting Audit Log Viewer link surfaces logs of personal-data changes and of successful and failed authentications. Logs are then filtered by date and keyword, each entry carrying its event category, event and object type, timestamp, and the user who performed the action.Yogananda, published 2025-03-23
Mobile First - Making the SAP IAS-based Proof Key for Code Exchange (PKCE) great again! 🎉Mobile First - Making the SAP IAS-based Proof Key for Code Exchange (PKCE) great again! 🎉Proof Key for Code Exchange against Identity Authentication, revisited by the author after an earlier post on the same subject — the flow that lets a mobile or single-page client authenticate without a secret it cannot keep. Sample repository under SAP-samples.martinfrick, published 2023-09-21
Named-User Attribution Across BTP Subaccounts: A Two-Hop IAS Token Exchange for Cloud IntegrationNamed-User Attribution Across BTP Subaccounts: A Two-Hop IAS Token Exchange for Cloud IntegrationA central BTP application that manages Cloud Integration across subaccounts with client_credentials collapses every user into one technical service principal: target subaccounts' role collections are bypassed and the audit log names a service key instead of a person. The post works through a two-hop exchange — an IAS app-to-app hop, then the target subaccount's XSUAA jwt-bearer hop — that carries the calling user's own identity across the subaccount boundary through a shared Cloud Identity Services tenant, so the target subaccount enforces the user's own role collection and records their identity in the audit log. It walks through the IAS app-dependency setup, the AppRouter and SAP Destination service configuration the exchange needs, and states the pattern applies to any XSUAA-protected service in a separate subaccount, not only Cloud Integration.agnissh, published 2026-08-24
New and improved: Change Tracking pluginNew and improved: Change Tracking pluginThe 2.0 announcement, and unusually candid about why there is a 2.0 at all: the plugin already existed and was, in the author's words, plagued by many issues. What it records is every insert, update and delete with the user and the timestamp, aimed at root-cause analysis and at detecting changes nobody authorised. Generally available as of this post, having been hinted at as beta in the April release notes.published 2026-06-12
New and improved: Change Tracking plugin
cds 2, line ended. Affects A recipe, Runnable code.
Nice patch SAP! Revisiting your SAP BTP security measures after AI Core vulnerability fixNice patch SAP! Revisiting your SAP BTP security measures after AI Core vulnerability fixWritten after the SAPwned disclosure in SAP AI Core, it argues SAP BTP's shared-responsibility model still requires the customer's own hardening: scope SAP BTP, Cloud Foundry Runtime and SAP BTP, Kyma runtime app access, rotate OAuth2 client-credentials secrets, and enforce MFA and Conditional Access through a corporate identity provider rather than relying on SAP's patch alone. It then explains how the SAP Audit Log service writes standardized events for most Cloud Foundry BTP services, and walks through onboarding a BTP subaccount into Microsoft Sentinel for SAP BTP to query those logs with Kusto and build detection rules that flag unexpected login countries or known-bad IPs and trigger automatic user blocks.published 2024-07-25
Open Source UI5 Form ValidatorOpen Source UI5 Form ValidatorWalks through @learnin/ui5-validator, an open-source library the author built because UI5's standard constraints-based validation only fires on value change and cannot do batch validation on save, required-field checks across a whole view, or correlation checks between fields such as a start date against an end date. It coexists with UI5's own required attribute and message model rather than adding custom attributes, and the post shows the manifest.json wiring, a controller calling Validator#validate on save, and a registered cross-field validator comparing a fromDate and toDate DatePicker pair.actor:learnin, published 2025-02-04
Perform SAP Principal Propagation with Microsoft Entra ID for SAP SuccessFactors!Perform SAP Principal Propagation with Microsoft Entra ID for SAP SuccessFactors!Walks through SAP Principal Propagation for SAP SuccessFactors through SAP Integration Suite's API Management, using the OAuth2SAMLBearer flow with Microsoft Entra ID as the external identity provider. Covers the SuccessFactors-specific policy from the SAP Business Accelerator Hub, the API key and company id SuccessFactors uses in place of an OAuth2 client id, and the Entra ID app registration and key value map that exchange an Entra ID token for a SAP-authorized named user, so a consumer such as Power Automate runs under the mapped SAP user rather than a shared technical account.published 2024-11-20
SAP API Management for Beginners – Part 1: What Is APIM & A Complete Features TourSAP API Management for Beginners – Part 1: What Is APIM & A Complete Features TourA features tour of SAP Integration Suite's API Management capability, opening a five-part beginner series: what a governed API proxy adds over calling a backend directly, and a walkthrough of API Providers, Proxy and Target Endpoints, the Policy Editor and Policy Templates, Products, the Developer Hub, and Key Value Maps. It names rate limiting's two complementary policies as APIM implements them: Spike Arrest, which caps requests per second or minute against bursts, and Quota, which caps total calls per day, week or month against overuse.Rudhra, published 2026-08-03
SAP API Management for Beginners – Part 4: OAuth 2.0, KVM, Traffic Policies, Threat Protection&CORSSAP API Management for Beginners – Part 4: OAuth 2.0, KVM, Traffic Policies, Threat Protection&CORSPart 4 of a five-part beginner series on API Management within SAP Integration Suite builds out a Northwind proxy's policy set: an OAuth 2.0 token server assembled from API Management's own OAuthV2 policy, a Key Value Map for backend credentials, JSON Threat Protection and CORS headers. It places Spike Arrest and Quota on the ProxyEndpoint PreFlow, each with its policy XML and a Postman test, distinguishing per-second burst throttling from a daily call cap read from the API Product's own limit.Rudhra, published 2026-08-24
SAP BTP Audit Log Access Just Got Easier - Here’s What’s NewSAP BTP Audit Log Access Just Got Easier - Here’s What’s NewAnnounces that the Audit Log Viewer no longer needs a per-subaccount subscription: entitlement and setup now happen automatically in every subaccount of SAP Audit Log service. It also adds a viewer at the Global Account level, opened directly from the BTP cockpit rather than through a dedicated instance.AnisaTuscano, published 2026-03-10
SAP BTP Audit log Enable and retrieve logsSAP BTP Audit log Enable and retrieve logsWalks through enabling and retrieving records from the SAP Audit Log service on SAP BTP's Cloud Foundry environment: the default oAuth2 service plan retains audit data for 90 days at no cost, while the premium plan adds a configurable retention period and lets an application write its own audit data. Covers the three subscription plans (premium, default for a subaccount, central for a global account) and the CLI steps to create a service instance and key, then retrieve records as JSON through the Auditlog Management Service's REST API using an OAuth2 client-credentials token in Postman.anikesh_jyotishi2, published 2024-07-12
SAP BTP XSUAA Security Configuration Comparison: Attribute-Based vs. Authority-Based ApproachesSAP BTP XSUAA Security Configuration Comparison: Attribute-Based vs. Authority-Based ApproachesTwo shapes of the same xs-security.json set against each other, with the resulting JWT printed for both. The consequence for application code is what makes it worth reading: under the attribute-based configuration a CAP handler reads req.user.attr.department, and under the authority-based one it does not, because the attribute is not there. Carries a migration guide between the two.rajeshkputumbaka, published 2026-02-18
SAP Build Process Automation – Use Principal Propagation in Actions sample: CAP Node.js ServiceSAP Build Process Automation – Use Principal Propagation in Actions sample: CAP Node.js ServiceThe follow-up that carries the identity through. It takes the CAP service from the Actions tutorial and puts the calling user's identity behind it — an XSUAA instance, a trust configuration, an OAuthSAMLBearerAssertion destination, and the service changed to use that instance — so a step runs on behalf of a person rather than as the process.TJe, published 2023-06-22
SAP Build Process Automation – Use Principal Propagation in Actions sample: CAP Node.js Service
Workflow integration has changed twice since this was published, most recently in @cap-js/n8n 0.0.1, 2026-08-27. Affects A recipe.
SAP Business Technology Platform: Authorization and Trust Management ServiceSAP Business Technology Platform: Authorization and Trust Management ServiceWalks through how the SAP Authorization and Trust Management service secures a BTP application: scopes, attributes and role templates in the security descriptor, and the OAuth 2.0 resource-owner, client and resource-server roles it builds on. Covers the XSUAA microservice as the OAuth 2.0 authorization server bound to each application through its service broker, the signed JSON Web Token it issues after authentication, and the App Router's place in front of the resource apps as the gateway that starts authentication and checks for cross-site request forgery.SekhuteTK, published 2022-09-09
SAP CAP JWT Token Flow in codeSAP CAP JWT Token Flow in codeOne question, answered precisely: at what point does the JWT exist and how does it end up on req.headers.authorization in a CAP handler. XSUAA issues it and the approuter carries it, and the post follows it through both.sandeepmalhotra, published 2023-04-03
SAP CAP JWT Token Flow in code
Authentication changed in CAP Java 3.0.1, 2024-07-26. Affects Runnable code.
Securing a CAP Node.js App with SAP AMS on BTP Cloud FoundrySecuring a CAP Node.js App with SAP AMS on BTP Cloud FoundryThe end-to-end version: a CAP Node.js project from cds init, role-based access through the Authorization Management Service and Identity Authentication Service, and an MTA deployment to Cloud Foundry. The prerequisite list is the useful part to read first — HANA Cloud, an IAS tenant and an AMS entitlement — because it says plainly what this path costs before you are three steps into it.Jacky Liu, published 2026-07-17
Securing CAP Applications with SAP Cloud Identity Services and AMSSecuring CAP Applications with SAP Cloud Identity Services and AMSIdentity Authentication and AMS together as the current answer for a CAP application — authentication, single sign-on and the identity lifecycle on one side, policies on the other.gopalanand, published 2025-12-04
Securing SAP CAP Applications: XSUAA, Roles, and Authorization Best PracticesSecuring SAP CAP Applications: XSUAA, Roles, and Authorization Best PracticesWalks through securing a CAP service end to end: declaring scopes and role templates in xs-security.json for the SAP Authorization and Trust Management service (XSUAA), restricting CDS service definitions with @restrict per role, and dropping into handler code where a rule needs custom logic, with a @sap/cds Node.js example that tests roles through req.user.is and a Java one that tests scopes through hasScope. It closes in the BTP cockpit, where a role collection is assigned to users so that their JWT carries the scopes those checks read.Soumya-Pirlamarla, published 2025-07-14
Simplifying SAP BTP Authentication in Pipelines with SAP Passport and PlaywrightSimplifying SAP BTP Authentication in Pipelines with SAP Passport and PlaywrightClient-certificate login to BTP works locally and has historically not worked in automated pipelines. The post uses Playwright's then-new client certificate support to close that, which is a sideways use of a browser automation library and the reason it is worth recording — the constraint it removes is a CI constraint, not a testing one.published 2024-11-08
Standardized OIDC API Access to SAP S/4HANA via SAP API Management and Microsoft Entra IDStandardized OIDC API Access to SAP S/4HANA via SAP API Management and Microsoft Entra IDSAP API Management exchanges a Microsoft Entra ID access token for one issued by Cloud Identity Services, using an RFC 7523 JWT Bearer Token Exchange so an Azure service principal never holds S/4HANA credentials. SAP S/4HANA then validates that IAS token and resolves its claims to a single ABAP user before authorizing the call, which is the boundary authentication draws on BTP: the identity behind the token, not what it is then allowed to do.StigPraefcke, published 2026-04-29
Standardized OIDC API Access to SAP SuccessFactors via SAP API Management and Microsoft Entra IDStandardized OIDC API Access to SAP SuccessFactors via SAP API Management and Microsoft Entra IDAPI Management in SAP Integration Suite is the pattern's enforcement point: it intercepts a Microsoft Entra ID access token from a service principal and exchanges it, via the OAuth 2.0 JWT Bearer Token Exchange grant (RFC 7523), for a token issued by Cloud Identity Services, with Entra ID configured as a trusted corporate identity provider inside IAS. SAP SuccessFactors accepts only IAS-issued tokens, per SAP Note 3681224, so the exchange happens once at the gateway and client applications never hold SAP-specific credentials.StigPraefcke, published 2026-04-13
Understanding security approaches in SAP CAP using XSUAA in node.js flavor and MTA.Understanding security approaches in SAP CAP using XSUAA in node.js flavor and MTA.The long version, from the MTA project outward: what the deployment descriptor has to contain, how the authentication flow actually runs, and then the npm modules doing the work — @sap/xssec and @sap/xsenv named and explained rather than left as dependencies. Old, and the module names have moved on, but the flow it draws has not.balbinosoares, published 2020-03-16
Understanding security approaches in SAP CAP using XSUAA in node.js flavor and MTA.
Authorization has changed twice since this was published, most recently in CAP Java 3.7.1, 2025-01-30. Affects A recipe, Runnable code.
Use mocking to embrace auth in your domain model from the outsetUse mocking to embrace auth in your domain model from the outsetMock users locally so authorization is modelled from the first commit instead of retrofitted — the argument being that auth added late reshapes a domain model rather than sitting on top of it.SAP
Using Postman for API Testing with XSUAAUsing Postman for API Testing with XSUAAA way to get a JWT without routing traffic through the approuter and picking the token out of it. The author walks the alternatives first — redirect through the router, intercept the token — and says what is wrong with each, before requesting the token from the service directly.mariusobert, published 2020-03-02
Why developers should care about credential-types for xsuaa?Why developers should care about credential-types for xsuaa?Rotating secrets, argued from a habit rather than a feature: the author names the practice implicit in many beginner tutorials — lifting a secret out of a binding to use it elsewhere — and notes CAP has features that make it unnecessary in development. Then the three credential types side by side, configured on a CAP application's uaa resource in mta.yaml and through a deployment extension.former_member2839, published 2022-07-05
Why developers should care about credential-types for xsuaa?
Authorization has changed twice since this was published, most recently in CAP Java 3.7.1, 2025-01-30. Affects A recipe, Runnable code.
XSUAA Based Authentication - Using Managed ApprouterXSUAA Based Authentication - Using Managed ApprouterOne half of a pair published the same day, both starting from capire's list of authentication kinds and then going end to end on XSUAA. This is the managed approuter route, where the platform runs the router and the application supplies configuration rather than a module.rahul_rajagopal, published 2023-09-25
XSUAA Based Authentication - Using Managed Approuter
Authorization has changed twice since this was published, most recently in CAP Java 3.7.1, 2025-01-30. Affects A recipe.
XSUAA Based Authentication - Using Standalone ApprouterXSUAA Based Authentication - Using Standalone ApprouterThe other half: the same end-to-end XSUAA setup with an approuter you deploy and own. Published alongside the managed version, and the two are worth reading together because the difference between them is the whole decision.rahul_rajagopal, published 2023-09-25
XSUAA Local TestingXSUAA Local TestingAdding XSUAA to a CAP project two ways, and then the part that is usually missing: getting the authorisation to behave on a laptop rather than only after deployment. The default authentication mechanism is the easy half; testing it without a landscape is the reason this exists.ManasaManu, published 2024-10-17
XSUAA Local Testing
Authorization has changed twice since this was published, most recently in CAP Java 3.7.1, 2025-01-30. Affects A recipe, Runnable code.