BrowseAll ecosystems
Everything in the atlas
175 of 2362
Domain
Signals
Content: 3
More: 5
Group by: Capability
Source capireSource SAP CommunitySource SAP Developer CenterSource SAP BTP AI Best PracticesSource SAP websitePublished UndatedPublished 2024Published 2022Clear all
EntryBySignalsLast activity
Don't "let it crash", is this the new CAP guideline?Don't "let it crash", is this the new CAP guideline?Dinu traces a change in error handling in CAP's Node.js runtime: @sap/cds@8.2.0 adds a cds.server.shutdown_on_uncaught_errors config flag, defaulting to true, but invoking an operation with an undefined variable no longer takes the server down, with or without the flag, where the same code crashed it on cds@6 and cds@7, and the author notes the old behaviour was already missing in cds@8.1. It still crashes with features.odata_new_adapter turned off to use the old OData parser, so it is the new OData adapter, like the REST adapter before it, that answers an uncaught error with a 500 instead of taking the process down.Dinu, published 2024-09-06
Messaging System for Transferring Error, Warning, and Information Messages from OData V4 Services to HTTP Client ApplicationsMessaging System for Transferring Error, Warning, and Information Messages from OData V4 Services to HTTP Client ApplicationsGetting a message out of a CAP service and onto a Fiori elements object page in a draft scenario — errors, warnings and information, each of which the UI treats differently. Co-written with one of the people on the OData side, and it spends its length on the message container rather than on the handler that fills it.arley-triana-morin, published 2022-08-11
Messaging System for Transferring Error, Warning, and Information Messages from OData V4 Services to HTTP Client Applications
OData changed in @cap-js-community/odata-v2-adapter 1.10.0, 2023-04-05. Affects A recipe, Runnable code.
SAP: Email Functionality in SAP with a Custom Function ModuleSAP: Email Functionality in SAP with a Custom Function ModuleA custom ABAP function module, ZFM_SEND_EMAIL, sends mail through Business Communication Services' CL_BCS and CL_DOCUMENT_BCS classes, adding TO/CC/BCC recipients and multiple attachments by building the HTML document in application code on top of what CL_BCS delivers, which is how ABAP's notifications capability describes mail going out. The send sits in a TRY structure whose three CATCH blocks for CL_BCS's class-based exceptions are empty, so what reaches the caller is a BAPIRET2 table that BAPI_MESSAGE_GETDETAIL fills on the paths without an exception: no recipients given, sent to all, or not sent. That conversion into a caller-facing message table is what ABAP's error handling capability leaves to the application.Surendra_Karma, published 2024-12-16
SAP CAP function and action with Unstructured/Dynamic Type Input/OutputSAP CAP function and action with Unstructured/Dynamic Type Input/OutputA CAP action or function can take or return an unstructured type: annotate the service @protocol: 'rest', declare the parameter or return value as @open type object {}, and a handler shapes the payload however a given request needs, shown here with a bound action and a function that returns a different structure per input. The text states plainly that OData V4 and GraphQL services require a fixed structure for action and function parameters, so the dynamic type works only over CAP's REST protocol.published 2022-12-08
Usage of Expand Entity in OData Service Consumption ModelUsage of Expand Entity in OData Service Consumption ModelExplains how to use OData's $Expand option when SAP BTP, ABAP Environment consumes a remote service through a generated client proxy, the way HTTP clients describes it, using stubs ABAP Development Tools for Eclipse generates from the service's $metadata. The expanded association only comes back from get_business_data when the caller supplies its own ABAP type that redeclares the association as a nested table, in place of the generated CDS entity type. The same workaround still applies from release 2311 on, where the consumption model generates flat ABAP types rather than abstract CDS entities.alrikx, published 2024-02-08
CAP, CDS, CDL, CSN and jq - finding associationsCAP, CDS, CDL, CSN and jq - finding associationsHow associations are actually represented once CDL is compiled into CSN, worked out by parsing the machine-readable form with jq. Useful less as a recipe than as a way in: anything that wants to reason about a CDS model without the compiler has to read CSN, and this is what that looks like from the outside.published 2024-04-16
Importing an external data model using CDS Graphical Modeler for Visual Studio CodeImporting an external data model using CDS Graphical Modeler for Visual Studio CodeWalks through the CDS Graphical Modeler for Visual Studio Code: creating a "Customers" entity, importing an external OData model from an edmx file into the CDS model, and drawing a managed association from the new entity to an entity from the imported namespace. The import happens through the modeler's GUI rather than the cds import command, and the imported edmx becomes a CDS file the modeler can open directly.Xiao-fei_Song, published 2022-05-09
Calling bound / unbound CAP actions from Fiori elements application.Calling bound / unbound CAP actions from Fiori elements application.invokeAction from the Fiori elements Edit flow API, with the difference between bound and unbound actions spelled out first because the call shape differs. Under three thousand characters and it answers exactly one question.vidhyasagarmule, published 2024-09-07
Consume Remote Services in a Full-Stack CAP ApplicationConsume Remote Services in a Full-Stack CAP ApplicationExtending the Developer's Guide application with a remote S/4HANA service — connectivity, importing the Business Partner API, and running against it. SAP publishes this as four separate paths: mock server or real S/4HANA Cloud, times Cloud Foundry or Kyma. One entry covers all four, because the difference between them is which backend and which runtime, not what you learn.SAP
Extend SAP SuccessFactors on SAP BTP with CAP - Create the CAP ServiceExtend SAP SuccessFactors on SAP BTP with CAP - Create the CAP ServiceWalks through writing a service definition in SAP Business Application Studio that projects entities from an existing CDS model: one entity gets @odata.draft.enabled because Fiori Elements only shows CRUD actions on a draft-enabled entity, and a read-only projection of an already-imported SuccessFactors OData entity fails with the generic handlers because the call is delegated to the remote service, so a custom handler is needed. Running cds watch then serves the entities, drafts and $metadata at the declared service path.published 2022-03-23
Extend SAP SuccessFactors on SAP BTP with the SAP Cloud Application Programming ModelExtend SAP SuccessFactors on SAP BTP with the SAP Cloud Application Programming ModelTwelve tutorials, about two hours, building a side-by-side extension of SuccessFactors on BTP. The spine is remote services: importing the SuccessFactors OData service definitions into a CAP model, then treating them as entities the extension reads and writes through, rather than as an API called from a handler. Indexed as one entry because the parts only make sense in order.SAP
Graph intro series, part 8: Use Graph With OData v4Graph intro series, part 8: Use Graph With OData v4Part eight of the Graph intro series works through querying SAP Graph's unified business data graph over OData v4: inspecting the $metadata EDMX document for an entity type such as SalesQuote, then shaping the response with $select and nested $expand across navigation properties, and paging a collection with $filter, $orderby, $top and $skip. It stays with the protocol mechanics against the Graph sandbox endpoint rather than any one client library.florian_moritz, published 2024-03-19
Messaging System for Transferring Error, Warning, and Information Messages from OData V4 Services to HTTP Client ApplicationsMessaging System for Transferring Error, Warning, and Information Messages from OData V4 Services to HTTP Client ApplicationsGetting a message out of a CAP service and onto a Fiori elements object page in a draft scenario — errors, warnings and information, each of which the UI treats differently. Co-written with one of the people on the OData side, and it spends its length on the message container rather than on the handler that fills it.arley-triana-morin, published 2022-08-11
Messaging System for Transferring Error, Warning, and Information Messages from OData V4 Services to HTTP Client Applications
OData changed in @cap-js-community/odata-v2-adapter 1.10.0, 2023-04-05. Affects A recipe, Runnable code.
SAP CAP function and action with Unstructured/Dynamic Type Input/OutputSAP CAP function and action with Unstructured/Dynamic Type Input/OutputA CAP action or function can take or return an unstructured type: annotate the service @protocol: 'rest', declare the parameter or return value as @open type object {}, and a handler shapes the payload however a given request needs, shown here with a bound action and a function that returns a different structure per input. The text states plainly that OData V4 and GraphQL services require a fixed structure for action and function parameters, so the dynamic type works only over CAP's REST protocol.published 2022-12-08
SAP CAP(Cloud Application Programming)开发框架概述SAP CAP(Cloud Application Programming)开发框架概述A Chinese-language walkthrough of CAP built mainly from CAPire's own "About CAP" page: CDS entities, associations, compositions and aspects for data modelling, with an extend Books with @restrict: [{ grant:'WRITE', to:'admin' }] aspect as its authorization example; CQL and CQN queries shown against both a local service and OData's $select/$expand; and the service-and-event model — this.on, this.emit, srv.on — that carries CAP's async processing. It closes with the author's own setup: installing @sap/cds-dk, scaffolding a bookshop project with cds init, and running it with cds watch against local SQLite, mocked authentication and file-based messaging standing in for HANA Cloud, IAS and Kafka.ArthurYang, published 2024-01-07
Invoke OpenAPI-documented APIs remotely with SAP Cloud Application Programming ModelInvoke OpenAPI-documented APIs remotely with SAP Cloud Application Programming ModelThe other direction: consuming an API described by an OpenAPI document from CAP, rather than publishing one. Worth pairing with the plugin entries here, which all serve the outbound half.wittro, published 2022-08-30
Invoke OpenAPI-documented APIs remotely with SAP Cloud Application Programming Model
Destinations changed in @sap-cloud-sdk/connectivity 4.0.0, 2025-03-04. Affects Runnable code.
OpenAPIs in the SAP ecosystemOpenAPIs in the SAP ecosystemWhere OpenAPI actually turns up across SAP's own services, from somebody who spends their time in that ecosystem. Orientation rather than implementation.ajmaradiaga, published 2022-10-10
Examine the details of the Model Context Protocol on startupExamine the details of the Model Context Protocol on startupWhat the MCP adapter actually does when a CAP server boots, watched rather than described — the companion to the tutorial that switches it on.
Model Context Protocol (MCP)Model Context Protocol (MCP)Frames the Model Context Protocol as the answer to an M-times-N integration problem: one shared protocol turns M agents and N tools into M plus N connections, and one server can be called by any compliant agent. On SAP BTP its implementation section lists an SAP MCP Hub as a no-code way to expose enterprise tools, SAP Integration Suite's MCP Gateway as what it calls the governed path for exposing SAP and non-SAP APIs as MCP-compliant tools, custom SDK-based servers, SAP's MCP servers for development, and an MCP adapter for CDS as a CAP plugin marked coming soon. That is the ground MCP servers covers; for security it points at a separate page.
Model Context Protocol Adapter — CAP guideModel Context Protocol Adapter — CAP guideDocuments @cap-js/mcp and com.sap.cds:cds-adapter-mcp, service annotations, generated describe/query/call tools and local client setup. The guide records Java doc-comment configuration, unbound-action-based data changes, incomplete XSUAA PKCE support and the adapter’s governance boundaries.
SAP Data and Analytics Showcase - Develop a Machine Learning Application on SAP BTPSAP Data and Analytics Showcase - Develop a Machine Learning Application on SAP BTPThe overview post of a showcase written by three authors, setting out the dataset, the scenario and the solution map before any of it is built. Its job is to say which piece goes where across the SAP data and analytics portfolio; the CAP application is one station on that map rather than the subject.former_member10846, published 2022-08-12
SAP Data and Analytics Showcase – Use SAP Cloud Application Programming Model to Develop a Machine Learning Application on SAP BTPSAP Data and Analytics Showcase – Use SAP Cloud Application Programming Model to Develop a Machine Learning Application on SAP BTPThe instalment where the showcase becomes code: the CAP application built in Business Application Studio, and the sub-scenario it covers implemented step by step. The overview post is the one that says why this piece exists at all.former_member10846, published 2022-08-12
SAP Incentive Management - Understanding of CSN file & CLI Command to generateSAP Incentive Management - Understanding of CSN file & CLI Command to generateCSN met from the far end: not as CAP's compiled model but as the interchange format a product hands to Analytics Cloud so a story knows the shape of the data. Explains what CSN is, why the format matters here, and the command that produces one.Yogananda, published 2024-11-19
Consume SAP Document Management using @cap-js/sdm pluginConsume SAP Document Management using @cap-js/sdm pluginStoring attachments in a SAP Document Management repository from a CAP application, using the official plugin. The point the post makes about the plugin is that it brings its own UI: a user attaches any number of documents and one Save writes them all to the repository, so the application does not build an upload surface of its own.published 2024-08-26
Extend Upload Set to Fiori Elements and utilize Document Management ServiceExtend Upload Set to Fiori Elements and utilize Document Management ServiceWritten two months before there was an official plugin, and the author has left the record of that in the page: an update dated 2024-04-04 noting the CAP team released @cap-js/attachments, and another dated 2024-05-21 saying they tested it and wrote up the Object Store variant separately. The hand-built version underneath is still the answer when the plugin's storage choices do not fit.published 2024-02-25
Extend Upload Set to Fiori Elements and utilize Document Management Service
Attachments has changed 3 times since this was published, most recently in @cap-js/sdm 1.0.0, 2024-06-26. Affects Runnable code.
Extend Upload Set with Table to Fiori Elements and utilize Object StoreExtend Upload Set with Table to Fiori Elements and utilize Object StoreThe Object Store variant of the author's earlier Document Management post, written after testing @cap-js/attachments — a sample managing text and file information together, and offered as something for people new to BTP rather than as a pattern.published 2024-05-21
Extend Upload Set with Table to Fiori Elements and utilize Object Store
Fiori annotations changed in @sap/cds-dk 9.6.0, 2025-12-17. Affects Runnable code.
Unlocking Efficiency: Leveraging SAP BTP Document Management Service in Fiori Applications # 1Unlocking Efficiency: Leveraging SAP BTP Document Management Service in Fiori Applications # 1Walks through embedding SAP BTP Document Management Service's reusable documentTable UI component in a custom Fiori app built with Business Application Studio: setting up entitlements and a repository through SAP Document Management service, application option, then wiring the componentUsages manifest entry, xs-app.json route and MTA destination that bind the app to SAP Document Management service, integration option. First of a four-part series; this part covers only the custom-app scenario, leaving Fiori elements, a Build Process Automation task UI and the DMS API itself to the posts that follow.published 2024-11-11
Unlocking Efficiency: Leveraging SAP BTP Document Management Service in Fiori Applications # 2Unlocking Efficiency: Leveraging SAP BTP Document Management Service in Fiori Applications # 2Document Management's own Attachment Reuse UI dropped into a Fiori elements List Report, in two variants — OData V2, and OData V4 in a CAP application. The CAP half is one of the two scenarios rather than the subject; the rest of the series is about custom Fiori apps and a process task UI, with no CAP in them.published 2024-12-10
Working with the Attachment plugin - Cloud Application ProgrammingWorking with the Attachment plugin - Cloud Application ProgrammingOne instalment of the author's own series working through the CAP plugins one at a time, and it reads as that: what the plugin does, how it does it, and how to put it in a service. Written from the plugin list in capire rather than from a problem, which makes it the plainest introduction here.published 2024-05-18
Working with the Attachment plugin - Cloud Application Programming
@cap-js/attachments has been through 3 major lines since this was published: 2 (2025-03), 3 (2025-10), 4 (2026-08). Affects A recipe, Runnable code.
The Full Picture: Federating, Replicating, and Caching Remote Data in CAP — Part 1The Full Picture: Federating, Replicating, and Caching Remote Data in CAP — Part 1Part one of two, and the concepts half: terminology, what CAP already does, and what a project still has to write. It fixes a vocabulary — federation is the umbrella for making remote data part of your model, delegation forwards each request to the remote at query time, replication is a scheduled copy into the local database, and caching is an option on either rather than a third strategy — which collides with CAP's own, since what this series calls replication is what the CAP-level Data Federation guide calls federation. From the ground the Service Integration guide covers, it lists what is left to hand-write: cross-service $expand, navigation filters across the boundary, write forwarding, timeouts and retries, then scheduling, delta detection, backoff, a guard for two app instances sharing one schedule, idempotent writes, and knowing whether the last run succeeded. That list is why the edge to cds-data-federation holds: the second half maps it onto @federation.delegate and @federation.replicate and says which package carries which part — annotations in cds-data-federation, the scheduled engine in cds-data-pipeline, response caching through cds-caching — so it is the design rationale for the annotations, not the API reference. The gap list and the plugins answering it come from the same person who maintains them; cap-replication-demo and SAP's xtravels sample are cited as the hand-written form of the same work. Part 2 is announced as a walkthrough of a demo application and is not covered here.
CAP, CDS, CDL, CSN and jq - finding associationsCAP, CDS, CDL, CSN and jq - finding associationsHow associations are actually represented once CDL is compiled into CSN, worked out by parsing the machine-readable form with jq. Useful less as a recipe than as a way in: anything that wants to reason about a CDS model without the compiler has to read CSN, and this is what that looks like from the outside.published 2024-04-16
Explore the declarative power of status-transition flowsExplore the declarative power of status-transition flowsModelling which state a record may move to next, declaratively, rather than scattering the rule across the handlers that move it.SAP
Learn how to define constraints declaratively in your CDS modelLearn how to define constraints declaratively in your CDS modelConstraints expressed in the model rather than checked in a handler — the distinction the atlas draws between input validation the framework enforces and validation somebody writes.SAP
My CAP Projects ToolboxMy CAP Projects ToolboxA working inventory of daily CAP tooling: scaffolding a project with cds init and growing it facet by facet through cds add (TypeScript, seed data, an .http test file, a handler stub), then running it with cds watch and setting a breakpoint in a custom handler from SAP Business Application Studio's JavaScript Debug Terminal. It also walks through an @open entity that accepts properties the model never declared, and reading temporal data defined with CAP's temporal aspect, where a plain read returns only what is valid now and a custom handler is needed to retrieve every time slice.vvdries, published 2024-12-23
SAP CAP Recent Enhancements the HANA Dev Should Know AboutSAP CAP Recent Enhancements the HANA Dev Should Know AboutThomas Jung walks through CAP features for HANA database developers that landed through late 2021: doc comments in the data model (CDL comments propagated into generated database objects via the package.json cdsc.docs compiler option), and schema evolution reaching general availability in the November 2021 release, using the @cds.persistence.journal annotation and cds.hana.journal settings to generate incremental hdbmigrationtable migration scripts instead of dropping and recreating tables. It also walks through two features outside those two: window functions in view column definitions, added in the December 2021 release, and a beta assert_integrity setting that generates database foreign-key constraints from 1:1 associations and compositions.published 2022-02-15
SAP CAP(Cloud Application Programming)开发框架概述SAP CAP(Cloud Application Programming)开发框架概述A Chinese-language walkthrough of CAP built mainly from CAPire's own "About CAP" page: CDS entities, associations, compositions and aspects for data modelling, with an extend Books with @restrict: [{ grant:'WRITE', to:'admin' }] aspect as its authorization example; CQL and CQN queries shown against both a local service and OData's $select/$expand; and the service-and-event model — this.on, this.emit, srv.on — that carries CAP's async processing. It closes with the author's own setup: installing @sap/cds-dk, scaffolding a bookshop project with cds init, and running it with cds watch against local SQLite, mocked authentication and file-based messaging standing in for HANA Cloud, IAS and Kafka.ArthurYang, published 2024-01-07
SAP Incentive Management - Understanding of CSN file & CLI Command to generateSAP Incentive Management - Understanding of CSN file & CLI Command to generateCSN met from the far end: not as CAP's compiled model but as the interchange format a product hands to Analytics Cloud so a story knows the shape of the data. Explains what CSN is, why the format matters here, and the command that produces one.Yogananda, published 2024-11-19
Understanding entity relationships in CDSUnderstanding entity relationships in CDSModels a CAP task-management domain in CDS — Users, Roles, Tasks and Categories joined by to-one associations, a composition of tasks owned by a user, and a self-referencing association from a user to its parent — using the managed and cuid aspects from @sap/cds/common. It then visualises that model in Business Application Studio's CDS Graphical Modeler and adds a CAP Java before-handler that sets a generated password on user creation.Avinash_Vaidya, published 2022-11-22
2024/01最新版!Productivity Toolsを使ったCAPバックエンド開発②~HANA Cloud編~2024/01最新版!Productivity Toolsを使ったCAPバックエンド開発②~HANA Cloud編~In Japanese, and the second of a pair — database connection through to calling the API from outside, with authorisation in between. The author dates the screenshots explicitly and warns that the UI may have moved since, which is the right disclaimer for a click-through guide.takayuki_tanaka, published 2024-01-09
2024/01最新版!Productivity Toolsを使ったCAPバックエンド開発②~HANA Cloud編~
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects A recipe.
Configure an SAP CAP Application to Connect to an SAP HANA Cloud Database in Another Global Account or SubaccountConfigure an SAP CAP Application to Connect to an SAP HANA Cloud Database in Another Global Account or SubaccountThe case the tooling does not cover: the database is in a different global account, so there is no HDI container to bind and cds deploy cannot do its usual job. Written for exactly that, and it says so in the subtitle — without HDI.JhoelAnthonyRamosRomeroPE, published 2024-10-08
Distributed Resiliency of SAP CAP applications using SAP HANA Cloud (Multi-Zone Replication)Distributed Resiliency of SAP CAP applications using SAP HANA Cloud (Multi-Zone Replication)Resilience defined the way an operator would — failures happen in a complex landscape and should go unnoticed by the user — and then what multi-zone replication on HANA Cloud means for the CAP application in front of it.shanthakumar_krishnaswamy, published 2022-11-12
Extend SAP SuccessFactors on SAP BTP with CAP - Deploy to SAP HANA CloudExtend SAP SuccessFactors on SAP BTP with CAP - Deploy to SAP HANA CloudThe deployment instalment of the author's SuccessFactors extension series — the project already exists and the imported service is already modelled, so this is only the move onto HANA Cloud. Depends on the two posts before it and says so.ale_biagi, published 2022-03-29
How I migrated my on-prem xsa cds3+hana solution to cds6+sqliteHow I migrated my on-prem xsa cds3+hana solution to cds6+sqliteThree major CDS versions and a database swap in one move, done to get an old on-premise XSA application running somewhere cheap. The repository is linked, and the interest is in what broke between cds3 and cds6 rather than in the destination.alex_myakinkii, published 2022-08-07
How I migrated my on-prem xsa cds3+hana solution to cds6+sqlite
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects Runnable code.
How to create an API to run a HANA Cloud Stored Procedure in Cloud FoundryHow to create an API to run a HANA Cloud Stored Procedure in Cloud FoundryReaching past CDS to the database's own machinery — built-in algorithms, SQLScript procedures and functions — and putting an API in front of them. Long, and it is the case where the model is not where the logic belongs.gonzalo_hernan_sendra, published 2022-12-08
How to create an API to run a HANA Cloud Stored Procedure in Cloud Foundry
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects Runnable code.
SAP CAP Lessons Learned: Run a CAP app using SQLite on SAP BTP - Cloud FoundrySAP CAP Lessons Learned: Run a CAP app using SQLite on SAP BTP - Cloud FoundrySQLite past the point it is meant to go — deployed, not local. Written as a lesson learned rather than a recommendation, and it pairs with the author's own note that SQLite is single threaded.LucasMagriniRigo, published 2024-12-30
SFSFとHANA Cloudを使用するCAPのアプリケーション開発SFSFとHANA Cloudを使用するCAPのアプリケーション開発In Japanese. A hands-on taking data between SuccessFactors and HANA Cloud through a CAP application — the connection setup, the data and service models, then read and write logic, and a Cloud Foundry deploy. Long enough to carry its own table of contents.rasai, published 2022-12-14
SFSFとHANA Cloudを使用するCAPのアプリケーション開発
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects A recipe, Runnable code.
Sharing SAP HANA Cloud instance to multiple subaccounts and creating HDI containersSharing SAP HANA Cloud instance to multiple subaccounts and creating HDI containersOne HANA Cloud instance, several subaccounts, an HDI container created from each — the arrangement that keeps a landscape from paying for a database per subaccount. Written against a CAP project, so the container mapping is shown from the side that has to consume it.published 2024-03-23
Sharing SAP HANA Cloud instance to multiple subaccounts and creating HDI containers
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects Runnable code.
SQLite as database for a multi-target (/productive) CAP ApplicationSQLite as database for a multi-target (/productive) CAP ApplicationOpens with "Not recommended but possible", and then names the two cases where it is the right call anyway: a showcase, and a landscape with no HANA Cloud available. The caveat is the content.Christopher_Ketzler, published 2024-07-05
SQLite as database for a multi-target (/productive) CAP Application
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects A recipe, Runnable code.
Testing your CAP HANA Artifacts with jest – including multitenancy, hdbprocedure and hdbviewTesting your CAP HANA Artifacts with jest – including multitenancy, hdbprocedure and hdbviewcds.test covers the service; this covers what is underneath it, where the artifact is an hdbprocedure or an hdbview that CDS never sees. That means a real HDI container, so most of the post is about where to get one and how to give CAP access to it — the tests are the easy part once that is true.Tristan, published 2022-08-30
Testing your CAP HANA Artifacts with jest – including multitenancy, hdbprocedure and hdbview
Testing has changed 3 times since this was published, most recently in @cap-js/cds-test 1.0.0, 2026-04-23. Affects A recipe, Runnable code.
Upload data from excel in CAP (Node.js)Upload data from excel in CAP (Node.js)Mass upload from a spreadsheet, both halves shown: an entity marked @cds.persistence.skip to receive the file, an INSERT built from the parsed rows, and a list report extended with the upload button that starts it.KM11, published 2022-11-21
Upload data from excel in CAP (Node.js)
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects Runnable code.
Use SAP HANA as the Database for a CAP Java ApplicationUse SAP HANA as the Database for a CAP Java ApplicationMoving a CAP Java application off the development database onto HANA, which is the step where the persistence choice stops being invisible.SAP
Useful CAP CDS and Fiori Commands to Accelerate Development and DeploymentUseful CAP CDS and Fiori Commands to Accelerate Development and DeploymentA command-by-command walkthrough of @sap/cds-dk's cds add and fiori add generators: cds add xsuaa writes an XSUAA security configuration from the CDS model's authorization annotations, and cds add hana together with cds deploy --to hana switches persistence from the default SQLite database to SAP HANA Cloud. cds add mta and fiori add deploy-config, from @sap/generator-fiori, build the Cloud Foundry deployment descriptor together, adding a destination-service block and an xs-app.json that routes the Fiori app's calls through a named destination.TiaXu, published 2022-10-19
Using Postgresql Database in Cloud Application Programming modelUsing Postgresql Database in Cloud Application Programming modelA straight run through the official PostgreSQL guide with the steps spelled out, from initialising the server onward. Says as much itself — it follows the documentation rather than departing from it, which makes it the plainest of the PostgreSQL entries here.published 2024-05-14
Using Postgresql Database in Cloud Application Programming model
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects A recipe, Runnable code.
Create your first CAP pluginCreate your first CAP pluginA step-by-step guide to the cds-plugin.js extension point: scaffold a package, add an index.cds for shared model artifacts, and test it locally against a throwaway CAP project before publishing to npm, with a separate section on building the same plugin in TypeScript and compiling it with tsc. Points to the author's own cds-plugin-handlers and ui5-cap-serverside-rendering-plugin as worked examples.published 2024-12-09
How to mass upload from a spreadsheet file into an SAP Fiori app in SAP BTP ABAP Environment Part 1How to mass upload from a spreadsheet file into an SAP Fiori app in SAP BTP ABAP Environment Part 1Part 1 of a three-part series on mass-uploading records from a spreadsheet into a RAP business object in the SAP BTP ABAP environment, using the XCO XLSX module to parse an uploaded Excel file without any open-source library. It reads a named worksheet by its column-and-row coordinates into an internal table through the row-stream operation, then creates or updates records with the EML MODIFY ENTITIES statement, and reserves the Fiori elements custom-action wiring and the download/template generation for Parts 2 and 3.DebrajManna87, published 2024-08-08
How I migrated my on-prem xsa cds3+hana solution to cds6+sqliteHow I migrated my on-prem xsa cds3+hana solution to cds6+sqliteThree major CDS versions and a database swap in one move, done to get an old on-premise XSA application running somewhere cheap. The repository is linked, and the interest is in what broke between cds3 and cds6 rather than in the destination.alex_myakinkii, published 2022-08-07
How I migrated my on-prem xsa cds3+hana solution to cds6+sqlite
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects Runnable code.
SAP CAP Recent Enhancements the HANA Dev Should Know AboutSAP CAP Recent Enhancements the HANA Dev Should Know AboutThomas Jung walks through CAP features for HANA database developers that landed through late 2021: doc comments in the data model (CDL comments propagated into generated database objects via the package.json cdsc.docs compiler option), and schema evolution reaching general availability in the November 2021 release, using the @cds.persistence.journal annotation and cds.hana.journal settings to generate incremental hdbmigrationtable migration scripts instead of dropping and recreating tables. It also walks through two features outside those two: window functions in view column definitions, added in the December 2021 release, and a beta assert_integrity setting that generates database foreign-key constraints from 1:1 associations and compositions.published 2022-02-15
Case-insensitive filters in Fiori Elements (List report + CAP)Case-insensitive filters in Fiori Elements (List report + CAP)A blocker rather than a feature: filters on a List Report are case-sensitive, the business wanted them not to be, and the CAP backend is where it gets fixed. Node and Java both.Kishannaicker, published 2022-04-26
My CAP Projects ToolboxMy CAP Projects ToolboxA working inventory of daily CAP tooling: scaffolding a project with cds init and growing it facet by facet through cds add (TypeScript, seed data, an .http test file, a handler stub), then running it with cds watch and setting a breakpoint in a custom handler from SAP Business Application Studio's JavaScript Debug Terminal. It also walks through an @open entity that accepts properties the model never declared, and reading temporal data defined with CAP's temporal aspect, where a plain read returns only what is valid now and a custom handler is needed to retrieve every time slice.vvdries, published 2024-12-23
SAP CAP(Cloud Application Programming)开发框架概述SAP CAP(Cloud Application Programming)开发框架概述A Chinese-language walkthrough of CAP built mainly from CAPire's own "About CAP" page: CDS entities, associations, compositions and aspects for data modelling, with an extend Books with @restrict: [{ grant:'WRITE', to:'admin' }] aspect as its authorization example; CQL and CQN queries shown against both a local service and OData's $select/$expand; and the service-and-event model — this.on, this.emit, srv.on — that carries CAP's async processing. It closes with the author's own setup: installing @sap/cds-dk, scaffolding a bookshop project with cds init, and running it with cds watch against local SQLite, mocked authentication and file-based messaging standing in for HANA Cloud, IAS and Kafka.ArthurYang, published 2024-01-07
SAP Job Scheduling Service + Cloud Application Programming Model application (CAP) + SAP Authorization and Trust Management Service (XSUAA)SAP Job Scheduling Service + Cloud Application Programming Model application (CAP) + SAP Authorization and Trust Management Service (XSUAA)Calling an unsecured endpoint on a schedule is trivial; this is the same thing once the endpoint is protected. The interesting part is the caller — the Job Scheduling Service is not a person, so CAP's pseudo-roles are where the post spends its time, and $XSSERVICENAME has to match the scheduler's own instance name.former_member412792, published 2022-12-12
Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]The opening of a three-part series on reaching more than one S/4HANA system from one CAP application with the user's identity carried through. This part sets up the business problem; the propagation itself is in the parts that follow.mohit_bansal3, published 2022-11-25
BTP CAP : How to Connect to Remote Services Locally in CAP ApplicationBTP CAP : How to Connect to Remote Services Locally in CAP ApplicationThe same problem four years earlier: a CAP application that consumes a remote service, running locally against the real thing rather than against a mock.showkath_naseem, published 2022-12-12
Consume Remote Services in a Full-Stack CAP ApplicationConsume Remote Services in a Full-Stack CAP ApplicationExtending the Developer's Guide application with a remote S/4HANA service — connectivity, importing the Business Partner API, and running against it. SAP publishes this as four separate paths: mock server or real S/4HANA Cloud, times Cloud Foundry or Kyma. One entry covers all four, because the difference between them is which backend and which runtime, not what you learn.SAP
Consume SOAP Web Services in SAP Cloud Application Programming ModelConsume SOAP Web Services in SAP Cloud Application Programming ModelCalling a SOAP service from CAP — the case the remote-service story does not cover, since CAP's own import path speaks OData and OpenAPI.SAP
Develop and deploy a HTML (Angular/Vue/React) app on SAP BTP access S/4 OP, Part IIIDevelop and deploy a HTML (Angular/Vue/React) app on SAP BTP access S/4 OP, Part IIIThird part of a series on an Angular front end over CAP against an on-premise S/4HANA system: after an OData V4 service is exposed from S/4 OP, a CAP (Node.js) project imports its metadata with cds import, wires it as an external service with cds.connect.to, and resolves the on-premise tenant through a named destination set under the service's cds configuration in package.json. The HTML app itself is built as shown in an earlier part of the series and is only referenced here.Hongjun_Qian, published 2024-03-11
Execute [OAuth2 client credentials] protected REST request with SAP CAP ApplicationExecute [OAuth2 client credentials] protected REST request with SAP CAP ApplicationA recipe, and the author calls it that — package.json, a .cds and a handler — for calling a remote service protected by OAuth2 client credentials from a CAP application. Short, complete, and addressed to CAP developers rather than to BTP administrators.Lachmish, published 2022-04-27
Execute [OAuth2 client credentials] protected REST request with SAP CAP Application
Authentication changed in CAP Java 3.0.1, 2024-07-26. Affects A recipe.
Extend SAP SuccessFactors on SAP BTP with CAP - Import SAP SuccessFactors OData Services definitionsExtend SAP SuccessFactors on SAP BTP with CAP - Import SAP SuccessFactors OData Services definitionsWalks through importing the ECEmployeeProfile and PLTUserManagement OData services from SAP API Business Hub into a CAP project: downloading their EDMX files, running cds import in SAP Business Application Studio to generate the CSN under srv/external, and pointing the resulting cds.requires entries at a destination. The second half creates a destination and an XSUAA service instance on BTP and binds their service keys into a default-env.json file so the project can reach SAP SuccessFactors during local development.published 2022-03-21
Extend SAP SuccessFactors on SAP BTP with the SAP Cloud Application Programming ModelExtend SAP SuccessFactors on SAP BTP with the SAP Cloud Application Programming ModelTwelve tutorials, about two hours, building a side-by-side extension of SuccessFactors on BTP. The spine is remote services: importing the SuccessFactors OData service definitions into a CAP model, then treating them as entities the extension reads and writes through, rather than as an API called from a handler. Indexed as one entry because the parts only make sense in order.SAP
HTML5.Timeout for CAP destinations in mta.yaml longer than defaultHTML5.Timeout for CAP destinations in mta.yaml longer than defaultA page and a half about one property that has to be raised when a CAP destination is slower than the default allows — and it now opens with its own correction, dated October 2025, that the property is called timeout rather than HTML5.Timeout, credited to a commenter. The correction is why it is worth keeping.NilsJanen, published 2022-11-09
Invoke OpenAPI-documented APIs remotely with SAP Cloud Application Programming ModelInvoke OpenAPI-documented APIs remotely with SAP Cloud Application Programming ModelThe other direction: consuming an API described by an OpenAPI document from CAP, rather than publishing one. Worth pairing with the plugin entries here, which all serve the outbound half.wittro, published 2022-08-30
Invoke OpenAPI-documented APIs remotely with SAP Cloud Application Programming Model
Destinations changed in @sap-cloud-sdk/connectivity 4.0.0, 2025-03-04. Affects Runnable code.
Microsoft Sentinel for SAP goes agentlessMicrosoft Sentinel for SAP goes agentlessExplains how Microsoft Sentinel for SAP's new agentless data connector drops its Docker-based collector agent by reusing an existing SAP Cloud Connector setup together with SAP Integration Suite: on SAP NetWeaver 750 and later, a small set of RFC function modules must be reachable from Integration Suite, added as an RFC connection in the subaccount's Destinations maintenance view, with a user authorised to call them (RFC connectivity). It also covers calling the audit log API remotely, which on older releases needs SAP note 3054326 and a different integration-package configuration.published 2024-12-17
Part 3: Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]Part 3: Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]The final part, and the one with the most CAP in it — the service consuming the propagated destinations, and what the handler sees. Read the three together; the series is one piece.mohit_bansal3, published 2022-11-25
Part 3: Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]
Destinations changed in @sap-cloud-sdk/connectivity 4.0.0, 2025-03-04. Affects A recipe.
Part2: Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]Part2: Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]The middle part: the destinations and the trust that make principal propagation work against several backends rather than one, which is where the configuration stops being a copy of the tutorial.mohit_bansal3, published 2022-11-25
Qualtrics integration with domain based authorization in CAP project on HANA cloudQualtrics integration with domain based authorization in CAP project on HANA cloudSurveys pulled from Qualtrics into a CAP application in real time, with the twist in the title: authorisation decided by the user's domain rather than by a role collection. A pattern that comes up whenever the audience is wider than the tenant.former_member69893, published 2022-09-30
Qualtrics integration with domain based authorization in CAP project on HANA cloud
Authorization has changed twice since this was published, most recently in CAP Java 3.7.1, 2025-01-30. Affects Runnable code.
SFSFとHANA Cloudを使用するCAPのアプリケーション開発SFSFとHANA Cloudを使用するCAPのアプリケーション開発In Japanese. A hands-on taking data between SuccessFactors and HANA Cloud through a CAP application — the connection setup, the data and service models, then read and write logic, and a Cloud Foundry deploy. Long enough to carry its own table of contents.rasai, published 2022-12-14
SFSFとHANA Cloudを使用するCAPのアプリケーション開発
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects A recipe, Runnable code.
Use the SAP Cloud SDK in the SAP Cloud Application Programming ModelUse the SAP Cloud SDK in the SAP Cloud Application Programming ModelReaching for the Cloud SDK from inside a CAP service, for the calls CAP's own remote services do not make.SAP
Useful CAP CDS and Fiori Commands to Accelerate Development and DeploymentUseful CAP CDS and Fiori Commands to Accelerate Development and DeploymentA command-by-command walkthrough of @sap/cds-dk's cds add and fiori add generators: cds add xsuaa writes an XSUAA security configuration from the CDS model's authorization annotations, and cds add hana together with cds deploy --to hana switches persistence from the default SQLite database to SAP HANA Cloud. cds add mta and fiori add deploy-config, from @sap/generator-fiori, build the Cloud Foundry deployment descriptor together, adding a destination-service block and an xs-app.json that routes the Fiori app's calls through a named destination.TiaXu, published 2022-10-19
Generating PDF on BTP CF using CAP and PuppeteerGenerating PDF on BTP CF using CAP and PuppeteerA headless browser rendering the PDF, which is the answer people reach for when the document is really a web page. The Cloud Foundry part is the difficulty: Puppeteer needs a browser in the buildpack, and that is what the post is actually about.ltomazeli58, published 2024-03-28
How to Generate and Download PDFs on the fly without persisting in CAP ApplicationHow to Generate and Download PDFs on the fly without persisting in CAP ApplicationStreaming a generated document straight to the client without writing it anywhere first — which sidesteps the retention question a stored file creates, and is the distinction worth having beside the attachments capability.HarsithKumarReddy, published 2024-06-18
[Blog Post] SAP Event Mesh – CAP based implementation of SAP Event Mesh in a Single-Tenant Scenario[Blog Post] SAP Event Mesh – CAP based implementation of SAP Event Mesh in a Single-Tenant ScenarioThe instalment of the Deep Dive series where the framework arrives. The earlier posts consumed Event Mesh over its REST API, so this one is explicitly a comparison: the same thing through CAP's messaging abstraction, with the three flavours — local, file-based and a real broker — named before the broker one is built.AyushKumar and vipul.khullar, published 2022-06-06
[Blog Post] SAP Event Mesh – CAP based implementation of SAP Event Mesh in a Single-Tenant Scenario
Event Mesh changed in @sap/cds 10.0.3, 2026-07-02. Affects A recipe, Runnable code.
A Natural Choice: SAP AIF can now expose events to Advanced Event Mesh to power your EDAA Natural Choice: SAP AIF can now expose events to Advanced Event Mesh to power your EDAAnnounces AIFAEM, a new software component of SAP Application Interface Framework that lets SAP ECC and older SAP S/4HANA backends create custom events from BOR objects and IDocs, in CloudEvents format, and publish them to SAP Integration Suite, advanced event mesh — closing the gap for backends that predate S/4HANA's own RAP-based standard events. It ships as the ABAP add-on AIFAEM731 (SAP NetWeaver 7.31, i.e. ECC) or AIFAEM800 (NetWeaver 7.55 and later), and its usage is included in an advanced event mesh subscription.KStrothmann, published 2024-07-29
Event Driven Architecture with Event Mesh - Part-1Event Driven Architecture with Event Mesh - Part-1Continues the author's own CDS entity-relationship example rather than starting a fresh one, which is the point of it — the same model gains events. Concepts first, then a message client and queue on BTP, then a Postman check that the queue works before any CAP code is written, and finally the emit from a CAP REST service.Avinash_Vaidya, published 2022-12-04
Event Driven Architecture with Event Mesh - Part-1
Event Mesh changed in @sap/cds 10.0.3, 2026-07-02. Affects A recipe, Runnable code.
Event-Driven Multi-Tenant Architecture on SAP BTP with CAP and SAP Event MeshEvent-Driven Multi-Tenant Architecture on SAP BTP with CAP and SAP Event MeshThe two topics that are usually written about separately, taken together — because a shared broker is where tenant isolation stops being automatic. It starts from why microservices are decoupled at all, places Event Mesh among the four broker services BTP offers, and then works through what changes when the publisher and the consumer are multitenant.ale_biagi, published 2024-12-19
Integrating SAP S/4HANA Invoicing with KSeF Using SAP Event Mesh and CAPIntegrating SAP S/4HANA Invoicing with KSeF Using SAP Event Mesh and CAPA concrete regulatory deadline rather than a demo topic: every Polish invoice has to pass through KSeF, the national e-invoice platform, and this proposes the route — S/4HANA business events onto Event Mesh, a CAP application consuming them and talking to KSeF. Short, and offered as an example to argue with.Yahor, published 2024-08-29
SAP Advanced Event Mesh – Manage Advance Event Mesh with API’sSAP Advanced Event Mesh – Manage Advance Event Mesh with API’sMaps the API surface of SAP Advanced Event Mesh: the REST API(v2) for administering the cloud environment and its event broker services (with legacy v0/v1 noted as discouraged), SEMP(v2) for provisioning and operating a single event broker, and the open protocols and standards it supports for consuming events, among them JMS, OpenMAMA, REST, AMQP 1.0, MQTT and WebSocket. Covers how each API authenticates — bearer tokens with scoped permissions for REST API(v2), username/password or OAuth2/certificate-based for SEMP(v2) — and where to find the connection details and reference documentation for each.Nils_Lorenz, published 2024-08-28
Triggering SAP Build Process Automation Processes from SAP Cloud Application Programming (CAP) AppsTriggering SAP Build Process Automation Processes from SAP Cloud Application Programming (CAP) AppsThe two routes out of a CAP application into a process, side by side: a destination with OAuth2ClientCredentials, the same destination with principal propagation, and Event Mesh with a CloudEvents payload. Written before @cap-js/process existed, so it is the record of what the plugin now does for you — useful when the plugin does not fit, and useful for reading what it is actually doing underneath.ATheobaldt, published 2024-12-09
Triggering SAP Build Process Automation Processes from SAP Cloud Application Programming (CAP) Apps
Workflow integration has changed twice since this was published, most recently in @cap-js/n8n 0.0.1, 2026-08-27. Affects A recipe, Runnable code.
Groovy Script to Compare XML Payloads in SAP CPIGroovy Script to Compare XML Payloads in SAP CPIWalks through an integration flow on Cloud Integration that detects which records changed between two XML payloads: two Content Modifier steps store the old and new employee datasets as exchange properties, and a Groovy script step parses both with XmlSlurper, matches employees by EMPLOYEE_ID, compares each child element's text and rebuilds only the changed records with MarkupBuilder. The full script and both sample payloads are shown, and the flow's purpose is to shrink a message to just its updated segments before it moves on downstream.gaganhl, published 2024-03-27
Integrating SAP CPI with Microsoft SharePoint: Part 2- Creating an API to Upload Files to SharePointIntegrating SAP CPI with Microsoft SharePoint: Part 2- Creating an API to Upload Files to SharePointPart two of a three-part series builds a custom HTTP API in Cloud Integration: an HTTP adapter receives the upload, an exchange property derives a folder path from header values, and the SharePoint receiver adapter writes the file with OAuth2 authorization code authentication. It also covers exposing that flow through API Management and enabling streaming so larger files bypass its default 10 MB payload limit.siddhartha_routh, published 2024-11-05
Resend HTTP messages with configured pause and fixed max iteration followed by error handlingResend HTTP messages with configured pause and fixed max iteration followed by error handlingBuilds a retry pattern for a Cloud Integration HTTP Receiver call by splitting the request-reply step into its own local sub-process, which loops on the response code — up to a fixed five iterations, each after a configured pause — and routes to an exception sub-process that attaches the message processing log through Groovy once the count is exceeded or another error occurs. The design is the author's own alternative to the platform's retry pattern and inbuilt HTTP Receiver Adapter retry option, built for cases where neither applies; SAP Event Mesh and SAP Advanced Event Mesh are named only as the queue-based alternative the author considered and set aside.Aman_V, published 2024-01-03
SAP PI Migration to BTP Integration Suite Patterns and learning experiencesSAP PI Migration to BTP Integration Suite Patterns and learning experiencesWalks through the integration patterns an SAP PI migration project moved onto SAP Cloud Integration iFlows — API Management proxies fronting calls into on-premise SAP systems over XI/SOAP via Cloud Connector, SFTP transfers, and eventing routes — and the operational lessons from running it: sizing JMS queues, choosing exactly-once JMS queues over Cloud Integration's Data Store for XI receiver adapters and at-least-once JMS for XI sender adapters, and workarounds for gaps in the migration tooling. The API Management proxies handle JWT validation against a non-SAP identity provider, IP filtering and OData-to-OpenAPI conversion in front of the iFlows.saikrishna_kalivarapu2, published 2024-12-04
SFTP File Level Checks in SAP BTP Cloud IntegrationSFTP File Level Checks in SAP BTP Cloud IntegrationFor an SFTP flow in Cloud Integration that an external party triggers, the post recommends polling with SFTP Poll-Enrich rather than relying on the Sender SFTP adapter and its built-in scheduler, and because Poll-Enrich polls one file per trigger, the design is a Main flow whose Looping Process Call repeatedly invokes a Local Integration Process that holds the Poll-Enrich step. On top of that design, it adds four router conditions, each checked against SAP_PollEnrichMessageFound, CamelLoopIndex, CamelFileName or CamelFileLength: no file found on the first poll, no more files left mid-loop, more than one file present when exactly one should be processed, and an empty file, each letting the flow terminate or raise an exception instead of failing on an unhandled read.Srishti_Gupta, published 2024-09-16
Receive Notifications from Amazon Simple Notification Service for SAP S/4HANA BTP Extension AppReceive Notifications from Amazon Simple Notification Service for SAP S/4HANA BTP Extension AppEmail notifications from a CAP application through Amazon SNS instead of anything SAP provides — a hyperscaler service used directly from the extension rather than through a BTP intermediary. The argument for it is stated as reach rather than cost: the extension gets the platform's services and the hyperscaler's at the same time.albertoliu1993, published 2022-10-14
SAP: Email Functionality in SAP with a Custom Function ModuleSAP: Email Functionality in SAP with a Custom Function ModuleA custom ABAP function module, ZFM_SEND_EMAIL, sends mail through Business Communication Services' CL_BCS and CL_DOCUMENT_BCS classes, adding TO/CC/BCC recipients and multiple attachments by building the HTML document in application code on top of what CL_BCS delivers, which is how ABAP's notifications capability describes mail going out. The send sits in a TRY structure whose three CATCH blocks for CL_BCS's class-based exceptions are empty, so what reaches the caller is a BAPIRET2 table that BAPI_MESSAGE_GETDETAIL fills on the paths without an exception: no recipients given, sent to all, or not sent. That conversion into a caller-facing message table is what ABAP's error handling capability leaves to the application.Surendra_Karma, published 2024-12-16
Microsoft Sentinel for SAP goes agentlessMicrosoft Sentinel for SAP goes agentlessExplains how Microsoft Sentinel for SAP's new agentless data connector drops its Docker-based collector agent by reusing an existing SAP Cloud Connector setup together with SAP Integration Suite: on SAP NetWeaver 750 and later, a small set of RFC function modules must be reachable from Integration Suite, added as an RFC connection in the subaccount's Destinations maintenance view, with a user authorised to call them (RFC connectivity). It also covers calling the audit log API remotely, which on older releases needs SAP note 3054326 and a different integration-package configuration.published 2024-12-17
Recommendations for Customers on using the Direct Push-Based IntegrationRecommendations for Customers on using the Direct Push-Based IntegrationExplains SAP's direct push-based integration, where two ABAP systems (SAP BTP ABAP environment, SAP S/4HANA Cloud or SAP S/4HANA on-premise) exchange business events by calling each other over RFC connectivity, carried over CPI-C or WebSocket depending on the release, through a sender channel on one side and a matching receiver channel on the other that lists which events it wants. It recommends the mechanism only between systems in the same location or subaccount, without public exposure, and for prototyping event-driven scenarios before moving to Event Mesh or SAP Integration Suite, Advanced Event Mesh at a larger scale.sandra_thimme, published 2024-08-09
WebSocket RFC to Cloud Using SAP Business ConnectorWebSocket RFC to Cloud Using SAP Business ConnectorWalks through wiring RFC connectivity between an on-premise ABAP system and a cloud ABAP system (SAP S/4HANA Cloud or Steampunk) through SAP Business Connector, which tunnels classic RFC over a WebSocket/HTTPS connection past firewalls. Covers the RFC destination of type T on the source system, the Communication User, Communication Scenario and Communication Arrangement needed on the cloud side to allow-list the function modules being called, and the three configuration steps on the Business Connector itself, closing with a list of common connection errors and their fixes.Ulrich_Schmidt1, published 2022-10-17
Why SAP Cloud Identity Matters for SAP Task Center: It’s About Trust and Global User IDWhy SAP Cloud Identity Matters for SAP Task Center: It’s About Trust and Global User IDA step-by-step configuration walkthrough for wiring SAP Cloud Identity Services as the trust and user-correlation layer behind SAP Task Center: establishing Identity Authentication as the sole trusted identity provider for the BTP subaccount, and generating the Global User ID — carried in the token's user_uuid claim rather than the SAML name identifier — that Task Center uses to match logged-in users to their tasks. It also covers syncing that ID between Microsoft Entra ID, the Identity Directory and SAP S/4HANA through Identity Provisioning jobs, and the principal-propagation trust the cloud connector needs to pass it through to an on-premise task provider.ivelinakiryakov, published 2024-11-25
Extend SAP SuccessFactors on SAP BTP with CAP - Create the CAP ServiceExtend SAP SuccessFactors on SAP BTP with CAP - Create the CAP ServiceWalks through writing a service definition in SAP Business Application Studio that projects entities from an existing CDS model: one entity gets @odata.draft.enabled because Fiori Elements only shows CRUD actions on a draft-enabled entity, and a read-only projection of an already-imported SuccessFactors OData entity fails with the generic handlers because the call is delegated to the remote service, so a custom handler is needed. Running cds watch then serves the entities, drafts and $metadata at the declared service path.published 2022-03-23
Extend SAP SuccessFactors on SAP BTP with CAP - Import SAP SuccessFactors OData Services definitionsExtend SAP SuccessFactors on SAP BTP with CAP - Import SAP SuccessFactors OData Services definitionsWalks through importing the ECEmployeeProfile and PLTUserManagement OData services from SAP API Business Hub into a CAP project: downloading their EDMX files, running cds import in SAP Business Application Studio to generate the CSN under srv/external, and pointing the resulting cds.requires entries at a destination. The second half creates a destination and an XSUAA service instance on BTP and binds their service keys into a default-env.json file so the project can reach SAP SuccessFactors during local development.published 2022-03-21
SAP CAP: Consume SAP API Hub Sandbox Data as an external service Part- 1SAP CAP: Consume SAP API Hub Sandbox Data as an external service Part- 1Walks through consuming SAP API Business Hub's Business Partner sandbox API from a CAP Node.js project: @sap/cds-dk's cds import turns the downloaded EDMX into a CSN model and a cds.requires entry, a projection service exposes it, and a custom handler forwards reads to the proxy through @sap/cds's cds.connect.to and bp.run(req.query). Reaching the sandbox needs the API key added as a header on that same credentials block, since the destination service that would carry it is left for a promised part two.DebashishDas, published 2022-03-17
Content-based Agents with SAP Joule Studio Agent BuilderContent-based Agents with SAP Joule Studio Agent BuilderJoule Studio, classic edition, the capability in SAP Build the page calls Joule Studio, is where an organisation creates and manages its own Joule skills and Joule agents; its Agent Builder is for a custom agent that handles a multi-step task by combining instructions, model-backed planning and reasoning, and a configured set of tools, Joule skills, document resources, MCP servers, or other agents run as subagents. The page states an agent executes inside the calling user's own security context through SAP Cloud Identity Services, and can be tried against a test conversation before deployment. That is the tool-and-turn-taking ground agent tooling covers, here built through Joule Studio rather than in application code.
Custom Joule SkillsCustom Joule SkillsA custom Joule skill is a workflow written to extend what Joule does out of the box for one specific business need, built and deployed through Joule Studio in SAP Build; the page states this is the supported way to extend Joule's built-in capabilities. Through Joule Studio a skill reaches SAP and external APIs via the destinations already configured in the BTP subaccount and Build environment, with the workflow itself versioned, monitored and deployable from the same tool.
Pro-Code AI AgentsPro-Code AI AgentsPro-code agents are the most flexible way the page frames building an agentic workflow on SAP BTP: full autonomy, custom API integrations and algorithms chosen by the developer, set against declarative alternatives such as content-based agents and Joule Scenarios. It names LangGraph as the framework it recommends for production, enterprise-grade agentic workflows, alongside the ReAct pattern as the plan-act-observe loop such an agent runs. That is the ground agent tooling covers, building an agent's own tool-calling loop rather than exposing an application to somebody else's agent.
Content FilteringContent FilteringContent filtering screens a large language model's input and output for low-quality, irrelevant or unsafe content: the four categories it names being hateful, violent, sexual and vulgar content, checking a request once on the way in and once on the way back. The page states smaller models can do this filtering efficiently, reading perplexity scores to flag anomalies, with the aim that SAP AI Core produces content meeting a stated safety standard, which is the ground content filtering covers on the BTP door.
Data MaskingData MaskingData masking replaces identifiable or confidential text in a prompt with placeholders such as <Person_0> or <Organization_1> before it reaches a large language model, using pattern matching and machine learning to find what to replace. The page states SAP AI Core supports it as a feature and sets out five steps for applying it, defining the masking scope, choosing a technique, preserving the prompt's intent, checking compliance and risk, then testing and monitoring the result. That is the shape data masking takes on the BTP door.
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
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
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
Access to Generative AI ModelsAccess to Generative AI ModelsSets out the plain way to call a deployed generative AI model on SAP BTP: a request that carries the prompt, the model and the parameters that control generation, with the same code able to switch between models. It lists data masking, prompt templating and filtering as features that come with the access rather than as code the caller writes, which is the shape LLM integration takes on the BTP door; the page's implementation sections sit behind its steps and were not read.
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.
Content FilteringContent FilteringContent filtering screens a large language model's input and output for low-quality, irrelevant or unsafe content: the four categories it names being hateful, violent, sexual and vulgar content, checking a request once on the way in and once on the way back. The page states smaller models can do this filtering efficiently, reading perplexity scores to flag anomalies, with the aim that SAP AI Core produces content meeting a stated safety standard, which is the ground content filtering covers on the BTP door.
Data MaskingData MaskingData masking replaces identifiable or confidential text in a prompt with placeholders such as <Person_0> or <Organization_1> before it reaches a large language model, using pattern matching and machine learning to find what to replace. The page states SAP AI Core supports it as a feature and sets out five steps for applying it, defining the masking scope, choosing a technique, preserving the prompt's intent, checking compliance and risk, then testing and monitoring the result. That is the shape data masking takes on the BTP door.
Document GroundingDocument GroundingDocument Grounding is a managed retrieval-augmented-generation service under the Generative AI Hub on BTP, which SAP's page on SAP AI Core places inside that service: it ingests documents from Amazon S3, SharePoint, SAP Document Management Service, SAP Work Zone or an SFTP server, and handles chunking, embedding and retrieval itself, refreshing content automatically when a source document changes. The page states this managed path is recommended for most enterprise scenarios because it covers the whole lifecycle end to end, and offers a separate Document Grounding Vector API for data that is already chunked and embedded, for cases that need finer control over chunking and metadata.
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
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
Prompt TemplatingPrompt TemplatingPrompt templating replaces a static prompt with a structured, reusable template whose placeholders are filled in at runtime, which the page says helps LLM responses stay consistent and lets the same instructions be adapted across tasks. On SAP AI Core this is implemented through the Prompt Registry, and the page states that storing prompts as plain strings in code is possible but not recommended. That is prompt management as a stored and managed object rather than a string embedded in the caller.
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
Prompt TemplatingPrompt TemplatingPrompt templating replaces a static prompt with a structured, reusable template whose placeholders are filled in at runtime, which the page says helps LLM responses stay consistent and lets the same instructions be adapted across tasks. On SAP AI Core this is implemented through the Prompt Registry, and the page states that storing prompts as plain strings in code is possible but not recommended. That is prompt management as a stored and managed object rather than a string embedded in the caller.
Document GroundingDocument GroundingDocument Grounding is a managed retrieval-augmented-generation service under the Generative AI Hub on BTP, which SAP's page on SAP AI Core places inside that service: it ingests documents from Amazon S3, SharePoint, SAP Document Management Service, SAP Work Zone or an SFTP server, and handles chunking, embedding and retrieval itself, refreshing content automatically when a source document changes. The page states this managed path is recommended for most enterprise scenarios because it covers the whole lifecycle end to end, and offers a separate Document Grounding Vector API for data that is already chunked and embedded, for cases that need finer control over chunking and metadata.
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
Vector RAG vs Graph RAGVector RAG vs Graph RAGA section introduction rather than the comparison itself: it states that the choice between Vector RAG and Graph RAG depends on the domain and the task, and that Vector RAG is the one to use when the subject area has a clear description and the model must be held to specific data structures and attribute values. The four sub-pages it introduces, two on vector-based and two on graph-based RAG, carry the comparison. It sits on the same retrieval question retrieval-augmented generation answers, without naming CDS, CAP or a store.
Agentic AI Security & GovernanceAgentic AI Security & GovernanceNames seven threat categories agentic AI introduces beyond ordinary application security: prompt injection, excessive agency, supply-chain and model-integrity compromise, memory poisoning, improper output handling, resource abuse and agent-to-agent communication poisoning. Its answer is a defence-in-depth structure of security controls, input validation, privilege management, supply-chain checks, memory segmentation, output validation, execution quotas, secure communication, paired with governance and oversight: audit logging, explainability, human-in-the-loop review, fairness assessment and continuous monitoring. States the reason plainly: an agent decides, chains actions across turns, keeps memory between them and can act on real systems, a different risk profile from a single request-response call. That is the authorisation and audit-trail question tool governance is named for.
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
Microsoft Sentinel for SAP goes agentlessMicrosoft Sentinel for SAP goes agentlessExplains how Microsoft Sentinel for SAP's new agentless data connector drops its Docker-based collector agent by reusing an existing SAP Cloud Connector setup together with SAP Integration Suite: on SAP NetWeaver 750 and later, a small set of RFC function modules must be reachable from Integration Suite, added as an RFC connection in the subaccount's Destinations maintenance view, with a user authorised to call them (RFC connectivity). It also covers calling the audit log API remotely, which on older releases needs SAP note 3054326 and a different integration-package configuration.published 2024-12-17
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
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
Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]The opening of a three-part series on reaching more than one S/4HANA system from one CAP application with the user's identity carried through. This part sets up the business problem; the propagation itself is in the parts that follow.mohit_bansal3, published 2022-11-25
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
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.
Execute [OAuth2 client credentials] protected REST request with SAP CAP ApplicationExecute [OAuth2 client credentials] protected REST request with SAP CAP ApplicationA recipe, and the author calls it that — package.json, a .cds and a handler — for calling a remote service protected by OAuth2 client credentials from a CAP application. Short, complete, and addressed to CAP developers rather than to BTP administrators.Lachmish, published 2022-04-27
Execute [OAuth2 client credentials] protected REST request with SAP CAP Application
Authentication changed in CAP Java 3.0.1, 2024-07-26. Affects A recipe.
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
Part 3: Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]Part 3: Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]The final part, and the one with the most CAP in it — the service consuming the propagated destinations, and what the handler sees. Read the three together; the series is one piece.mohit_bansal3, published 2022-11-25
Part 3: Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]
Destinations changed in @sap-cloud-sdk/connectivity 4.0.0, 2025-03-04. Affects A recipe.
Part2: Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]Part2: Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]The middle part: the destinations and the trust that make principal propagation work against several backends rather than one, which is where the configuration stops being a copy of the tutorial.mohit_bansal3, published 2022-11-25
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 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
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
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.
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
Why SAP Cloud Identity Matters for SAP Task Center: It’s About Trust and Global User IDWhy SAP Cloud Identity Matters for SAP Task Center: It’s About Trust and Global User IDA step-by-step configuration walkthrough for wiring SAP Cloud Identity Services as the trust and user-correlation layer behind SAP Task Center: establishing Identity Authentication as the sole trusted identity provider for the BTP subaccount, and generating the Global User ID — carried in the token's user_uuid claim rather than the SAML name identifier — that Task Center uses to match logged-in users to their tasks. It also covers syncing that ID between Microsoft Entra ID, the Identity Directory and SAP S/4HANA through Identity Provisioning jobs, and the principal-propagation trust the cloud connector needs to pass it through to an on-premise task provider.ivelinakiryakov, published 2024-11-25