BrowseAll ecosystems
Everything in the atlas
173 of 2362
Domain
Signals
Content: 2
More: 3
Group by: Capability
EntryBySignalsLast activity
Edge Integration Cell : Design, deploy and manage APIsEdge Integration Cell : Design, deploy and manage APIsWalks through creating an API artifact in API Management on the customer-managed Edge Integration Cell runtime, including the option to generate the artifact by importing an OpenAPI specification rather than from a URL or by hand. It then attaches an Authentication policy and a Quota step capped at four calls per minute, deploys, and shows both the resulting 401 and the quota-breach error in the Monitor logs. The author frames it as the first of a series on Edge Integration Cell's policies.published 2023-11-15
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
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
Kyma Integration with SAP Cloud Logging. Part 2: Let's ship some tracesKyma Integration with SAP Cloud Logging. Part 2: Let's ship some tracesWalks through shipping traces from SAP BTP, Kyma runtime to SAP Cloud Logging: a Kyma TracePipeline resource pointed at the service binding's OTLP endpoint, an Istio Telemetry resource that sets the mesh-wide sampling percentage, and Cloud Logging's Trace Analytics view to filter the resulting spans by service name or request ID. For a multitenant JavaScript CAP application it instruments with @cap-js/telemetry, naming the npm packages to add, and covers Cloud Native Buildpacks and manual Istio header propagation for services outside CAP.gabbi, published 2024-04-19
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
SAP CAPv7 - Node.js Highlights and ExperiencesSAP CAPv7 - Node.js Highlights and ExperiencesAn account of upgrading a 100+ table CAP Node.js project from v6 to v7, working through breaking changes in @sap/cds 7: event handlers now always receive an array, service paths move under /odata/v4/... unless serve_on_root is set, and cds-serve replaces cds run. It goes deepest on the GraphQL plugin, @cap-js/graphql: the /graphql endpoint it serves, Composition results wrapped in a nodes connection, and offset-based pagination reached through OData's top and skip rather than GraphQL's own limit and offset.published 2023-08-03
Tips for running CAP nodejs in SAP BTPTips for running CAP nodejs in SAP BTPDeliberately not a summary of capire: the author says up front that nothing here repeats the documented best practices, and the subject is configuration for running cloud-natively rather than correctly. Examples target Cloud Foundry, with the claim that they hold for Kyma too.published 2023-06-21
Tips for running CAP nodejs in SAP BTP
Deployment changed in @sap/cds-dk 8.9.0, 2025-03-31. Affects Runnable code.
#BTP #SAPCAP: Quirky Nuggets (N03-N04)#BTP #SAPCAP: Quirky Nuggets (N03-N04)Two unrelated findings in one post, which is the format of the series: the OData operators tried against a CAP service — with a schema of deliberately awkward types to try them on — and undeploying database artifacts, which is the half people hit in anger. Numbered N03 and N04 of a run that continues either side.Ajit_K_Panda, published 2023-06-05
#BTP #SAPCAP: Quirky Nuggets (N03-N04)
Deployment changed in @sap/cds-dk 8.9.0, 2025-03-31. Affects A recipe, Runnable code.
A modern workflow for SAP Cloud Integration with CAP and Azure DevOpsA modern workflow for SAP Cloud Integration with CAP and Azure DevOpsCAP used to build tooling rather than an application: the development workflow for Cloud Integration is limited to what the Integration Suite offers, so the author puts a CAP service and Azure DevOps around it. An unusual use of the framework, and the reason to read it.marcel_schork62, published 2023-06-27
Deploy and Run the Incident Management Application in the SAP BTP, Kyma Runtime with a Mock ServerDeploy and Run the Incident Management Application in the SAP BTP, Kyma Runtime with a Mock ServerBuilds the Incident Management CAP service and its HTML5 UI deployer as container images with the pack CLI's Cloud Native Buildpacks, then deploys both to SAP BTP, Kyma runtime with a Helm chart, wiring in the mock-server destination and productive cds build --production output set up in the prerequisite tutorials. Marked out of maintenance in favour of the newer "Develop a Side-by-Side CAP-Based Extension Application" mission in SAP Discovery Center, but the build-and-deploy mechanics it walks through — buildpacks, image tags, a Helm chart — are what deployment still covers for Kyma.published 2024-12-06
Deploy and Run the Incident Management Application in the SAP BTP, Kyma Runtime with a Mock Server
Deployment changed in @sap/cds-dk 8.9.0, 2025-03-31. Affects A recipe.
Multitenant SaaS applications on SAP BTP using CAP? SAP BTP, Kyma Runtime!Multitenant SaaS applications on SAP BTP using CAP? SAP BTP, Kyma Runtime!The Kyma counterpart to the Cloud Foundry Tried-and-True series — the same SaaS application, the same requirements, a Kubernetes runtime underneath. The two code lines were later merged, which the Reloaded post announces.martinfrick, published 2023-04-05
SAP BTP - KYMA - SERVICE MESHSAP BTP - KYMA - SERVICE MESHThe service mesh as it applies to side-by-side extensions — what it gives you between services once more than one of them is deployed. Definitional in places, and it quotes the official documentation for the concept before showing the use.maxi1555, published 2023-09-15
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
SAP SuccessFactors extensibility easy with SAP BTP, Kyma runtimeSAP SuccessFactors extensibility easy with SAP BTP, Kyma runtimeSuccessFactors extensibility called directly from Kyma, with OAuth2SAMLBearerAssertion doing the identity part. Long, and code-first — the author leads with the sample rather than with the architecture.quovadis, published 2023-05-22
Simplifying SaaS Self-Onboarding Automation using Terraform in Kyma and Cloud FoundrySimplifying SaaS Self-Onboarding Automation using Terraform in Kyma and Cloud FoundrySelf-onboarding automated with Terraform across both runtimes rather than one, which is the point — the same subscriber flow described for Kyma and for Cloud Foundry side by side.martinfrick, published 2023-09-07
Speed up deployment for CAP using TurborepoSpeed up deployment for CAP using TurborepoImpatience as a method: minutes of waiting on MBT and cf deploy sent the author looking for alternatives. It is fair to MBT first — a wrapper doing the whole deployment in one go, creating services and applications along the way — before showing what Turborepo changes about the build half. The trade it makes is explicit rather than assumed.published 2024-12-06
Speed up deployment for CAP using Turborepo
Deployment changed in @sap/cds-dk 8.9.0, 2025-03-31. 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.
Surviving and Thriving with the SAP Cloud Application Programming Model: Deployment to SAP BTP, Kyma runtimeSurviving and Thriving with the SAP Cloud Application Programming Model: Deployment to SAP BTP, Kyma runtimeAn episode of the author's #CAPTricks series, and it reads like one — long, opinionated, and organised around the things that actually go wrong on the way to a deployed CAP application rather than around the documented happy path.maxstreifeneder, published 2023-03-07
Surviving and Thriving with the SAP Cloud Application Programming Model: Deployment to SAP BTP, Kyma runtime
Deployment changed in @sap/cds-dk 8.9.0, 2025-03-31. Affects A recipe, Runnable code.
Tips for running CAP nodejs in SAP BTPTips for running CAP nodejs in SAP BTPDeliberately not a summary of capire: the author says up front that nothing here repeats the documented best practices, and the subject is configuration for running cloud-natively rather than correctly. Examples target Cloud Foundry, with the claim that they hold for Kyma too.published 2023-06-21
Tips for running CAP nodejs in SAP BTP
Deployment changed in @sap/cds-dk 8.9.0, 2025-03-31. Affects Runnable code.
Using Github Actions to Deploy a CAP App (MTA)Using Github Actions to Deploy a CAP App (MTA)Walks through a GitHub Actions workflow that deploys a CAP project's MTA to SAP BTP, Cloud Foundry: secrets and variables for the BTP credentials, a push-triggered job that checks out the repository, installs Node.js, runs npx mbt build and then cf deploy against the target org and space, plus an optional test job and a note on reusable workflow templates. Written because capire's own CI/CD guide is Docker-based and the linked sample is marked broken, so this fills the gap with the plain cds add mta / mbt build / cf deploy sequence driven by a pipeline instead of a terminal. That sequence is exactly what cds up, beta since @sap/cds-dk 8.9.0 (March 2025), now runs as one command, so the pipeline mechanics still hold but the three manual build-and-deploy steps it scripts are no longer the only way there.Christopher_Ketzler, published 2024-08-26
从BTP Launchpad里的sapui5应用里调用部署的CPI IFLOW从BTP Launchpad里的sapui5应用里调用部署的CPI IFLOWA short follow-up to the author's earlier post on calling a deployed CPI iflow from a standalone-router SAPUI5 app, adjusted for the case where the app runs inside the BTP Launchpad: the fetch call is built from the launchpad component's own base URI, and the app's xs-app.json approuter route maps a /cpi/* path to a destination that fronts the CPI iflow runtime, with XSUAA authentication on the route. It also walks the MTA build and cf deploy commands used to push the app, scaffolded with generator-easy-ui5, to BTP.Jacky_Liu1, published 2023-06-13
Open Sourcing CAP – how to learn more or get involvedOpen Sourcing CAP – how to learn more or get involvedA roundup of CAP's open-sourcing, begun at TechEd the year before, pointing to a webinar recording, a podcast episode and reCAP 2023 talks for background. Among the components it names are a feature toggle library giving Node.js CAP apps live-updatable toggles backed by Redis, a new pluggable database layer with SQLite and PostgreSQL implementations plus a generic SQL layer, and a change tracking component that builds a change history for data from CDS models.Fempel, published 2023-10-02
#BTP #SAPCAP: Quirky Nuggets (N05-N06)#BTP #SAPCAP: Quirky Nuggets (N05-N06)On SAP BTP, Cloud Foundry Runtime, a one-shot PostgreSQL db-deployer app can be restarted by the platform's default port-type health check inside its 60-second timeout, re-running the deploy and duplicating data in the PostgreSQL database; setting health-check-type to process or http, via cf commands or the app's mta.yaml parameters, avoids it. In CAP, a remote service's entities are imported and consumed through cds.connect.to and queried via a projection, but its functions and actions cannot be projected: they must be redefined in the consuming service's own interface, with the handler forwarding the call to the remote proxy.published 2023-07-27
From Application Logging to Cloud Logging: Service Innovation GuideFrom Application Logging to Cloud Logging: Service Innovation GuideSAP Cloud Logging replaces SAP Application Logging service, moving each customer from a shared multitenant stack to a dedicated, fully isolated one, and this guide sets out what changes with the move: a deployment per compliance region instead of per Cloud Foundry landscape, SAML/IDP-based authentication instead of Cloud Foundry-bound auth, retention that is configurable instead of fixed at seven days, and hourly capacity-unit pricing instead of fixed-size monthly plans. It also states the deprecation timeline for logging on BTP: SAP Application Logging closes to new or renewed CPEA contracts after 2025-07-31, while contracts signed before that date keep their entitlement until their next renewal.Hariharan-Gandhi, published 2024-11-22
From Application Logging to Cloud Logging: Service Migration GuideFrom Application Logging to Cloud Logging: Service Migration GuideA six-step guide to moving off SAP Application Logging service for SAP BTP onto SAP Cloud Logging: plan the instance layout, set up an Identity Authentication Service tenant for single sign-on to the new service, bind applications to both services in parallel so log data flows to each for comparison, then deprovision the old service once Cloud Logging holds the retained history. It covers what the logging libraries need so custom fields reach both services during the overlap: the CF Node.js library detects both bindings itself from v6.5.0, while the CF Java library has to be configured to retain each custom field at top level. It also gives the deprecation date SAP published for Application Logging under CPEA contracts, 31 July 2025.Hariharan-Gandhi, published 2024-11-22
Kyma Integration with SAP Cloud Logging. Part 1: Introduction and shipping LogsKyma Integration with SAP Cloud Logging. Part 1: Introduction and shipping LogsProvisions an SAP Cloud Logging instance for SAP BTP, Kyma runtime and ships application and Istio access logs to it through Kyma's Telemetry module, using LogPipeline custom resources that name the source namespaces and the target instance's credentials. Walks through the kubectl commands and example LogPipeline configuration for both an application's own logs and Istio's access logs, then how to browse the result in OpenSearch and the built-in Four Golden Signals dashboard. First of a three-part series; traces and metrics are left to the posts that follow.gabbi, published 2024-03-25
Kyma Integration with SAP Cloud Logging. Part 2: Let's ship some tracesKyma Integration with SAP Cloud Logging. Part 2: Let's ship some tracesWalks through shipping traces from SAP BTP, Kyma runtime to SAP Cloud Logging: a Kyma TracePipeline resource pointed at the service binding's OTLP endpoint, an Istio Telemetry resource that sets the mesh-wide sampling percentage, and Cloud Logging's Trace Analytics view to filter the resulting spans by service name or request ID. For a multitenant JavaScript CAP application it instruments with @cap-js/telemetry, naming the npm packages to add, and covers Cloud Native Buildpacks and manual Istio header propagation for services outside CAP.gabbi, published 2024-04-19
Migrating from Application Logging Service to Cloud LoggingMigrating from Application Logging Service to Cloud LoggingWalks through migrating from SAP Application Logging service for SAP BTP to SAP Cloud Logging on Cloud Foundry: sizing instances against the two services' quota and retention differences, running both bound in parallel for a week so no logs are lost, adjusting the Java and Node.js logging libraries' custom-field configuration so entries reach both, setting up SAML sign-on through IAS, and deprovisioning the old instance once Cloud Logging is confirmed to receive everything. Superseded by a newer version of this post; the quota math, custom-field steps and deprovisioning sequence here still hold.bill_keyes, published 2023-12-19
Performance Trace Node.js App on BTP with DynatracePerformance Trace Node.js App on BTP with DynatraceWalks through wiring Dynatrace as a third-party APM for a Node.js app on SAP BTP, as an alternative to the platform's own internal monitoring: creating an access token and a user-provided service instance, binding it in manifest.yaml, and adding the @dynatrace/oneagent-sdk package for distributed tracing across app router, IDP and connectivity-proxy hops. An appendix covers turning on @sap/approuter's debug-level log output through the XS_APP_LOG_LEVEL environment variable.jeremy_ma_usa, published 2024-09-04
SAP Cloud Logging Serviceでコンテナメトリクスを監視するSAP Cloud Logging Serviceでコンテナメトリクスを監視するIn Japanese. Container metrics for a CAP Node.js application into SAP Cloud Logging Service, and the reason it exists is that the obvious route does not apply: Spring Boot Actuator covers the Java side, and Node has no equivalent, so the author reaches for Telegraf instead. The procedure is deliberately independent of application logic — bind the instance, add a startup script and a config file — so it works against an application you already have.kyoneo, published 2024-03-26
Unleashing ABAP Potential: An introduction to Extension Libraries (XCO)Unleashing ABAP Potential: An introduction to Extension Libraries (XCO)Introduces ABAP's Extension Libraries (XCO), a library framework that puts reusable functionality behind one interface. The post places it as part of the ABAP RESTful Application Programming Model but versatile enough for other ABAP contexts, and says it works in both on-premise ABAP and the ABAP environment on SAP Business Technology Platform. It walks through a worked Logging example: xco_log=>factory->create_new_log opens a log keyed by object, subobject and external ID, logger->add_message appends a typed message, and logger->add_last_symsg attaches a problem class and level of detail for later traceability.tamitdassharma, published 2024-11-27
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
Multitenant SaaS applications on SAP BTP using CAP - The Reloaded Version!Multitenant SaaS applications on SAP BTP using CAP - The Reloaded Version!An announcement rather than a tutorial, and it is the one that changes how the rest of the series should be read: the Cloud Foundry and Kyma code lines and their documentation were merged into a single sample, so the runtime becomes a choice inside one repository instead of a fork in the reading path.martinfrick, published 2023-08-09
Multitenant SaaS applications on SAP BTP using CAP? SAP BTP, Kyma Runtime!Multitenant SaaS applications on SAP BTP using CAP? SAP BTP, Kyma Runtime!The Kyma counterpart to the Cloud Foundry Tried-and-True series — the same SaaS application, the same requirements, a Kubernetes runtime underneath. The two code lines were later merged, which the Reloaded post announces.martinfrick, published 2023-04-05
SaaS Self-Onboarding and One-Domain Concept in SAP BTP, Kyma Runtime using CAPSaaS Self-Onboarding and One-Domain Concept in SAP BTP, Kyma Runtime using CAPTwo requirements that only appear once a SaaS application has customers: subscribing a tenant end-to-end without the provider doing it by hand, and serving every tenant from one domain instead of one host per subscriber. Kyma runtime, and the post is a summary pointing at an Expert Feature tutorial in the sample repository — it says so itself, offering a one-minute read as the entry point.martinfrick, published 2023-06-01
SaaS Self-Onboarding and One-Domain Concept in SAP BTP, Kyma Runtime using CAP
Multitenancy changed in @sap/cds 7.0.0, 2023-06-22. Affects Runnable code.
Simplifying SaaS Self-Onboarding Automation using Terraform in Kyma and Cloud FoundrySimplifying SaaS Self-Onboarding Automation using Terraform in Kyma and Cloud FoundrySelf-onboarding automated with Terraform across both runtimes rather than one, which is the point — the same subscriber flow described for Kyma and for Cloud Foundry side by side.martinfrick, published 2023-09-07
Using the Terraform Provider for SAP BTP to simplify Subscriber Tenant OnboardingUsing the Terraform Provider for SAP BTP to simplify Subscriber Tenant OnboardingSubscriber onboarding expressed as infrastructure rather than as a runbook — the BTP Terraform provider doing the account-side work that a SaaS provider otherwise does by hand for every tenant. Part of the same author's multitenancy series.martinfrick, published 2023-08-21
Adding Custom Metrics to a CAP application using cap-js/telementry plugin and SAP Cloud LoggingAdding Custom Metrics to a CAP application using cap-js/telementry plugin and SAP Cloud LoggingWalks through adding a custom OpenTelemetry counter metric to a CAP application on top of @cap-js/telemetry's built-in database-pool metrics, incrementing and decrementing it from a service handler on CREATE and UPDATE of high-urgency incidents. Shows the resulting metric in SAP Cloud Logging's Discover and Visualize screens, building a custom visualisation from the exported metrics data.gopalanand, published 2024-06-27
Kyma Integration with SAP Cloud Logging. Part 2: Let's ship some tracesKyma Integration with SAP Cloud Logging. Part 2: Let's ship some tracesWalks through shipping traces from SAP BTP, Kyma runtime to SAP Cloud Logging: a Kyma TracePipeline resource pointed at the service binding's OTLP endpoint, an Istio Telemetry resource that sets the mesh-wide sampling percentage, and Cloud Logging's Trace Analytics view to filter the resulting spans by service name or request ID. For a multitenant JavaScript CAP application it instruments with @cap-js/telemetry, naming the npm packages to add, and covers Cloud Native Buildpacks and manual Istio header propagation for services outside CAP.gabbi, published 2024-04-19
Performance Trace Node.js App on BTP with DynatracePerformance Trace Node.js App on BTP with DynatraceWalks through wiring Dynatrace as a third-party APM for a Node.js app on SAP BTP, as an alternative to the platform's own internal monitoring: creating an access token and a user-provided service instance, binding it in manifest.yaml, and adding the @dynatrace/oneagent-sdk package for distributed tracing across app router, IDP and connectivity-proxy hops. An appendix covers turning on @sap/approuter's debug-level log output through the XS_APP_LOG_LEVEL environment variable.jeremy_ma_usa, published 2024-09-04
SAP Cloud Logging Serviceでコンテナメトリクスを監視するSAP Cloud Logging Serviceでコンテナメトリクスを監視するIn Japanese. Container metrics for a CAP Node.js application into SAP Cloud Logging Service, and the reason it exists is that the obvious route does not apply: Spring Boot Actuator covers the Java side, and Node has no equivalent, so the author reaches for Telegraf instead. The procedure is deliberately independent of application logic — bind the instance, add a startup script and a config file — so it works against an application you already have.kyoneo, published 2024-03-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
Surviving and Thriving with the SAP Cloud Application Programming Model: Local development hurdlesSurviving and Thriving with the SAP Cloud Application Programming Model: Local development hurdlesThree hurdles in running a CAP application locally: services mocked with cds run --with-mocks return no data across OData associations until the ON clause is hand-written into the imported CDS, an on-premise API reached through the SAP Cloud Connector times out because its proxy is part of destinations and connectivity and reachable only from inside SAP BTP, and a Fiori frontend served from the HTML5 Application Repository needs the HTML5 Repo Mock to reach a local backend at all. It closes with the launch configurations the author uses for debugging cds watch locally and attaching to a running Cloud Foundry instance.maxstreifeneder, published 2023-02-02
Develop CAP Project with Lazyvim in DockerDevelop CAP Project with Lazyvim in DockerA Docker image running Lazyvim with language server support for CDS, TypeScript and JSON, so a CAP project can be developed with an editing experience comparable to VS Code without leaving the keyboard. Narrow by intent, and the useful general point underneath it is that CAP's editor support reaches anything that speaks LSP.published 2024-03-28
Making CAP Application Development Easier and Faster with the Help of Storyboard in SAP Business Application StudioMaking CAP Application Development Easier and Faster with the Help of Storyboard in SAP Business Application StudioThe Storyboard from the other side — someone who came across it while learning the high-productivity tools, rather than someone who shipped it. It follows the whole arc a CAP project takes through the tool: entities, relationships, services, sample data, a UI, roles, and external resources, each as a thing the diagram can add rather than a file you open.Aryan_Raj_Sinha, published 2023-09-20
Now AI Helps You Developing SAPUI5 ApplicationsNow AI Helps You Developing SAPUI5 ApplicationsA walkthrough of Joule's generative AI chat panel for freestyle SAPUI5 development inside SAP Build Code: typed requests in the panel add a view with routing, a model with sample data and a table, or make hardcoded texts translatable, and an "Accept" button transfers the generated code straight into the project's files, with a "Copy" fallback for editing it by hand first. It recommends asking for whole increments rather than one control at a time, notes that Joule keeps the running conversation as context until "Reset Conversation" is pressed, and flags that generated control namespaces are sometimes wrong. A related Joule feature from the Fiori tools team instead creates a complete SAP Fiori elements list report application with its CAP project from business requirements, to continue from with this one.AndreasKunz, published 2024-03-27
SAP CAP: Best VSCode extensions for TypeScript development (UI5 & NodeJS)SAP CAP: Best VSCode extensions for TypeScript development (UI5 & NodeJS)A working editor setup for CAP with TypeScript, listed extension by extension across the Node.js and UI5 halves. The kind of post that ages by attrition rather than by being wrong — the reasoning about what an editor needs to know about a CDS project outlives any particular extension in the list.published 2024-04-29
SAP CAP: Best VSCode extensions for TypeScript development (UI5 & NodeJS)
Editor support changed in @sap/cds-dk 8.8.0, 2025-03-04. Affects Runnable code.
The fastest and easiest way to run full-stack applications in SAP Business Application StudioThe fastest and easiest way to run full-stack applications in SAP Business Application StudioThe gap between a mocked local run and a real one, and the tooling that closes it — live data, remote services, defaults overridden. The same author's Run Configurations post is the reference for the tool; this is the case it was built for.liat_b, published 2023-08-02
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
Now AI Helps You Developing SAPUI5 ApplicationsNow AI Helps You Developing SAPUI5 ApplicationsA walkthrough of Joule's generative AI chat panel for freestyle SAPUI5 development inside SAP Build Code: typed requests in the panel add a view with routing, a model with sample data and a table, or make hardcoded texts translatable, and an "Accept" button transfers the generated code straight into the project's files, with a "Copy" fallback for editing it by hand first. It recommends asking for whole increments rather than one control at a time, notes that Joule keeps the running conversation as context until "Reset Conversation" is pressed, and flags that generated control namespaces are sometimes wrong. A related Joule feature from the Fiori tools team instead creates a complete SAP Fiori elements list report application with its CAP project from business requirements, to continue from with this one.AndreasKunz, published 2024-03-27
Avoid design time CAP server restarts when maintaining local data filesAvoid design time CAP server restarts when maintaining local data filescds watch restarting on every file change is the feature; this is the case where it is not. Editing a CSV seed file mid-edit restarts the server against half-finished data, and the post is about suppressing that without giving up the watch loop. A small friction most people work around silently rather than fix.published 2024-04-26
Avoid design time CAP server restarts when maintaining local data files
Local development changed in @sap/cds-dk 7.9.1, 2024-05-02. Affects Runnable code.
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 PostgreSql setup local debugging using Docker - Part 2CAP PostgreSql setup local debugging using Docker - Part 2PostgreSQL in a container so the local loop matches the deployed one — the thing SQLite quietly stops you doing. Short, and it assumes the project from part one already runs.ramonlee5, published 2023-11-22
CAP PostgreSql setup local debugging using Docker - Part 2
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects A recipe.
CAP Typescript + Fiori Typescript + live reload Initial app setupCAP Typescript + Fiori Typescript + live reload Initial app setupA full-stack TypeScript starting point recorded as it was arrived at — the terminal commands and the configuration files, in order, for the CAP side, the conversion to TypeScript, and then the Fiori side. The author is explicit that it takes a while to go through, which is the honest framing for a setup that has this many steps.Christophe_SW, published 2023-06-18
CAP Typescript + Fiori Typescript + live reload Initial app setup
TypeScript patterns changed in @cap-js/cds-typer 0.5.0, 2023-07-25. Affects Runnable code.
cds-launchpad-plugin supercharged & ready for the future - CAP Plugin, UI5 Tooling support & Async Launchpadcds-launchpad-plugin supercharged & ready for the future - CAP Plugin, UI5 Tooling support & Async LaunchpadThe maintainer on a set of changes rather than on the plugin's original purpose, which is indexing every SAPUI5 project in a workspace into one sandbox launchpad so all of them can be tested together. What moved: it became a CAP plugin, gained UI5 Tooling support, and moved to the async launchpad — each framed as keeping pace with where SAPUI5 itself is going rather than as a feature.published 2023-12-11
Develop CAP Project with Lazyvim in DockerDevelop CAP Project with Lazyvim in DockerA Docker image running Lazyvim with language server support for CDS, TypeScript and JSON, so a CAP project can be developed with an editing experience comparable to VS Code without leaving the keyboard. Narrow by intent, and the useful general point underneath it is that CAP's editor support reaches anything that speaks LSP.published 2024-03-28
Hybrid testing using PostgreSQL on SAP BTP, hyperscaler optionHybrid testing using PostgreSQL on SAP BTP, hyperscaler optionA short note rather than a guide — the author says they came across the feature reading someone else's post on PostgreSQL with Kyma. Hybrid testing against a real PostgreSQL instance, which until then people assumed meant HANA.martinfrick, published 2023-08-08
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 Tech Bytes: Using the SAP Approuter at dev time - a full-stack journey with UI5 and CAPSAP Tech Bytes: Using the SAP Approuter at dev time - a full-stack journey with UI5 and CAPGetting UI5 Tooling and the CAP server onto one port under one command, using cds-plugin-ui5 — which the post presents as the thing that removes the proxy and destination configuration a full-stack dev setup otherwise needs. Part one of a journey that goes on to put the approuter in front at development time.published 2023-10-13
SAP Tech Bytes: Using the SAP Approuter at dev time - a full-stack journey with UI5 and CAP
cds-plugin-ui5 has been through 11 major lines since this was published, most recently 0.15 (2025-11), 0.16 (2025-12), 0.17 (2026-03). Affects Runnable code.
Surviving and Thriving with the SAP Cloud Application Programming Model: Local development hurdlesSurviving and Thriving with the SAP Cloud Application Programming Model: Local development hurdlesThree hurdles in running a CAP application locally: services mocked with cds run --with-mocks return no data across OData associations until the ON clause is hand-written into the imported CDS, an on-premise API reached through the SAP Cloud Connector times out because its proxy is part of destinations and connectivity and reachable only from inside SAP BTP, and a Fiori frontend served from the HTML5 Application Repository needs the HTML5 Repo Mock to reach a local backend at all. It closes with the launch configurations the author uses for debugging cds watch locally and attaching to a running Cloud Foundry instance.maxstreifeneder, published 2023-02-02
The fastest and easiest way to run full-stack applications in SAP Business Application StudioThe fastest and easiest way to run full-stack applications in SAP Business Application StudioThe gap between a mocked local run and a real one, and the tooling that closes it — live data, remote services, defaults overridden. The same author's Run Configurations post is the reference for the tool; this is the case it was built for.liat_b, published 2023-08-02
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.
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
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 build reusable plugin components for CAP Java applicationsHow to build reusable plugin components for CAP Java applicationsA companion to Daniel Schlachter's Reusable components for CAP with cds-plugin, showing the same mechanism on CAP Java: a plugin ships as its own Maven artifact with an event handler and a CdsRuntimeConfiguration implementation, registered through the JDK's ServiceLoader rather than any CAP-specific wiring. The walkthrough builds a cds-emoji-plugin-java jar that decorates @emoji-annotated fields on read, installs it to the local Maven repository, and adds it as a runtime dependency to a cds init --add java bookshop application. It argues the plugin mechanism was not new to CAP Java, just previously undocumented.robinjayasinghe, published 2023-05-16
Reusable components for CAP with cds-pluginReusable components for CAP with cds-pluginThe post that taught the mechanism, and it teaches it by picking a requirement small enough to be absurd: every string a service returns should end in a random emoji. Working through that on the bookshop example leaves nothing to argue about except the plumbing, which is the point — what a cds-plugin is, where it hooks in, and why packaging it beats copying it into the next project. Vinícius Barrionuevo credits this post as the thing that gave him the idea for sap-cap-sdm-plugin, and it is hard to read the plugin ecosystem in this graph without it.published 2023-04-30
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
Avoid design time CAP server restarts when maintaining local data filesAvoid design time CAP server restarts when maintaining local data filescds watch restarting on every file change is the feature; this is the case where it is not. Editing a CSV seed file mid-edit restarts the server against half-finished data, and the post is about suppressing that without giving up the watch loop. A small friction most people work around silently rather than fix.published 2024-04-26
Avoid design time CAP server restarts when maintaining local data files
Local development changed in @sap/cds-dk 7.9.1, 2024-05-02. Affects Runnable code.
ISO content for common CAP typesISO content for common CAP typesThe npm package that supplies ISO-standard content — countries, languages, currencies, timezones — for CAP's common types, and how it works underneath. The author flags the length and the reason for it up front, having followed the mechanism further than the question required, which is what makes it worth reading rather than a package announcement.published 2024-03-14
ISO content for common CAP types
Seed data changed in @sap/cds-dk 7.9.1, 2024-05-02. Affects Runnable code.
Using the UI5 Mockserver for Client-Specific Data and TestingUsing the UI5 Mockserver for Client-Specific Data and TestingWalks through a same-day feature in @sap-ux/ui5-middleware-fe-mockserver, 'Support autoloading mockdata file for specific tenants', which loads a <Entity>-<client>.json file keyed to the sap-client URL parameter and falls back to the entity's plain JSON file when no client-specific one exists. Shows the setup replacing generated mock data with hand-written JSON, then drives the same sap-client parameter through separate package.json scripts so wdi5 end-to-end tests can run against distinct tenant datasets.published 2024-11-18
CAP full-stack testing with BDD flavourCAP full-stack testing with BDD flavourIntroduces Behavior-Driven Development for CAP applications: specifications written in Gherkin against a running app, validated by Cucumber, using cds-cucumber's ready-made step definitions for SAP Fiori elements and OData screens. The library handles service lifecycle — starting the app, assigning a port, driving the browser and authenticating a named user — and its OData steps know the service's entities and fields from the CDS model itself, so a scenario can open a list report, search it and assert row counts without hand-written glue code.published 2023-10-10
cds-launchpad-plugin supercharged & ready for the future - CAP Plugin, UI5 Tooling support & Async Launchpadcds-launchpad-plugin supercharged & ready for the future - CAP Plugin, UI5 Tooling support & Async LaunchpadThe maintainer on a set of changes rather than on the plugin's original purpose, which is indexing every SAPUI5 project in a workspace into one sandbox launchpad so all of them can be tested together. What moved: it became a CAP plugin, gained UI5 Tooling support, and moved to the async launchpad — each framed as keeping pace with where SAPUI5 itself is going rather than as a feature.published 2023-12-11
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
CAP Typescript + Fiori Typescript + live reload Initial app setupCAP Typescript + Fiori Typescript + live reload Initial app setupA full-stack TypeScript starting point recorded as it was arrived at — the terminal commands and the configuration files, in order, for the CAP side, the conversion to TypeScript, and then the Fiori side. The author is explicit that it takes a while to go through, which is the honest framing for a setup that has this many steps.Christophe_SW, published 2023-06-18
CAP Typescript + Fiori Typescript + live reload Initial app setup
TypeScript patterns changed in @cap-js/cds-typer 0.5.0, 2023-07-25. Affects Runnable code.
CDS-TS-Dispatcher: Simplifying SAP CAP TypeScript DevelopmentCDS-TS-Dispatcher: Simplifying SAP CAP TypeScript DevelopmentThe first of a pair introducing the author's own libraries, and it states what it is reacting to: CAP derives OData services from a CDS model, but the communication between business logic, service and persistence layers is left to you, and the earlier attempt at the service-layer half, cds-routing-handler, appeared unmaintained against newer CAP. The dispatcher is the answer offered for that layer.published 2023-11-13
CDS-TS-Dispatcher: Simplifying SAP CAP TypeScript Development
@dxfrontier/cds-ts-dispatcher has been through 6 major lines since this was published, most recently 4 (2025-01), 5 (2025-07), 6 (2026-07). Affects Runnable code.
CDS-TS-Repository: Simplify SAP CAP Entity persistance with BaseRepositoryCDS-TS-Repository: Simplify SAP CAP Entity persistance with BaseRepositoryThe persistence half of the same pair, three days later: a BaseRepository putting entity access behind a typed repository rather than CQN written inline in a handler. Shares its opening argument with the dispatcher post — the layer between business logic and persistence is the part CAP leaves open — and the two are designed to be used together.published 2023-11-16
CDS-TS-Repository: Simplify SAP CAP Entity persistance with BaseRepository
@dxfrontier/cds-ts-repository has been through 9 major lines since this was published, most recently 5 (2024-12), 6 (2025-07), 7 (2026-07). Affects 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 we could potentially have nestjs as runtime for SAP CAPHow we could potentially have nestjs as runtime for SAP CAPA proof-of-concept that swaps @sap/cds's ApplicationService and ODataAdapter dispatch for NestJS controllers, providers and interceptors, built by the author to learn NestJS rather than to ship a runtime. It works through CAP's run-dispatch-handle loop and AsyncLocalStorage-based transaction boundaries in detail before mapping them onto NestJS dependency injection and interceptors — one community answer to the controller-service-repository layering question core TypeScript support leaves open. The author's own conclusion is that the result reimplements CAP Java in Node.js, and they do not plan to take it further.alex_myakinkii, published 2024-09-19
SAP CAP: Controller - Service - Repository architectureSAP CAP: Controller - Service - Repository architectureThe pattern the author's two libraries exist to support, set out as a whole rather than one package at a time: a controller layer receiving the request, a service layer holding business logic, and a repository layer owning persistence — the separation CAP leaves to the developer once a model has produced an OData service. Read after the dispatcher and repository posts, or before them as the argument for both.published 2024-04-22
SAP CAP: Controller - Service - Repository architecture
@dxfrontier/cds-ts-dispatcher has been through 4 major lines since this was published, most recently 4 (2025-01), 5 (2025-07), 6 (2026-07). Affects Runnable code.
Use TypeScript with the SAP Cloud Application Programming ModelUse TypeScript with the SAP Cloud Application Programming ModelWritten from the position of someone who avoided JavaScript for years and then had to cover CAP, which gives it a useful angle: what TypeScript buys a person arriving from a typed language, and where to start rather than how to finish. Ends on a worked example rather than a survey.KevinR, published 2024-06-24
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.
TypeScript Sheriff: How can I use TypeScript in the SAP ecosystem? (Part 2 of 3)TypeScript Sheriff: How can I use TypeScript in the SAP ecosystem? (Part 2 of 3)The middle part of three, and the one about SAP: where TypeScript is supported across a side-by-side extension on BTP, as of July 2023. It says the SAP Cloud SDK already generates OData clients as .ts files and UI5 ships types for its controls and modules, the ground of TypeScript support in UI5, while CAP offers standard types and the new @cap-js/cds-typer generates types for a service, which is typing, with the caveat that running cds-ts commands could overwrite what cds-typer generated.MikeDoyle, published 2023-07-05
Exploring the TypeScript Ecosystem with @cap-js/cds-typer, cds-ts, and node-tsExploring the TypeScript Ecosystem with @cap-js/cds-typer, cds-ts, and node-tsPart one of two: a bookshop project built in TypeScript from cds init, with cds-typer added as a development dependency and the surrounding tools — cds-ts and node-ts — put in place so the project runs locally. A setup walkthrough rather than an argument about typing, and it stops at the point where the application works on a laptop; deployment is part two.satya-dev, published 2024-07-08
Exploring the TypeScript Ecosystem with @cap-js/cds-typer, cds-ts, and node-ts
@cap-js/cds-typer has been through 18 major lines since this was published, most recently 0.39 (2026-05), 0.40 (2026-06), 0.41 (2026-08). Affects A recipe, Runnable code.
Exploring the TypeScript Ecosystem with @cap-js/cds-typer, cds-ts, and node-ts Part - 2Exploring the TypeScript Ecosystem with @cap-js/cds-typer, cds-ts, and node-ts Part - 2Part two takes the TypeScript project from part one to Cloud Foundry: cds add mta, then the parts of the generated descriptor the author singles out as needing attention for a TypeScript build rather than a JavaScript one. The pair together is the whole path — typed model locally, then deployed — which is where a typing walkthrough usually stops short.satya-dev, published 2024-07-19
Exploring the TypeScript Ecosystem with @cap-js/cds-typer, cds-ts, and node-ts Part - 2
@cap-js/cds-typer has been through 17 major lines since this was published, most recently 0.39 (2026-05), 0.40 (2026-06), 0.41 (2026-08). Affects Runnable code.
TypeScript Sheriff: How can I use TypeScript in the SAP ecosystem? (Part 2 of 3)TypeScript Sheriff: How can I use TypeScript in the SAP ecosystem? (Part 2 of 3)The middle part of three, and the one about SAP: where TypeScript is supported across a side-by-side extension on BTP, as of July 2023. It says the SAP Cloud SDK already generates OData clients as .ts files and UI5 ships types for its controls and modules, the ground of TypeScript support in UI5, while CAP offers standard types and the new @cap-js/cds-typer generates types for a service, which is typing, with the caveat that running cds-ts commands could overwrite what cds-typer generated.MikeDoyle, published 2023-07-05
Using the UI5 Mockserver for Client-Specific Data and TestingUsing the UI5 Mockserver for Client-Specific Data and TestingWalks through a same-day feature in @sap-ux/ui5-middleware-fe-mockserver, 'Support autoloading mockdata file for specific tenants', which loads a <Entity>-<client>.json file keyed to the sap-client URL parameter and falls back to the entity's plain JSON file when no client-specific one exists. Shows the setup replacing generated mock data with hand-written JSON, then drives the same sap-client parameter through separate package.json scripts so wdi5 end-to-end tests can run against distinct tenant datasets.published 2024-11-18
Keep the Core Clean with Rizing CDSXKeep the Core Clean with Rizing CDSXJhodel Cailan recounts hitting a wall where neither RAP nor CAP supported more than a non-draft OData V2 service for the side-by-side extensibility scenario he wanted, and built Rizing CDSX (@rizing/cds-extension) to add draft handling over a shadow persistence entity that mirrors a remote, cds import-ed service. He walks through the @cdsx.api annotation that proxies the entity, bootstrapping the module from cds.on('bootstrap') in server.js, and testing the result through a generated Fiori elements app backed by an OData V4 draft service.published 2023-05-07
Building an Analytical List Page with CAP OData V4Building an Analytical List Page with CAP OData V4The annotations a CAP OData V4 service needs before an Analytical List Page will render — the write-up behind the cap-alp sample indexed here. Candid about its provenance: the author credits a GitHub repository she found the approach in, and notes that the repository is no longer available, which is the whole argument for indexing the reasoning rather than only linking the code.published 2023-06-12
Building an Analytical List Page with CAP OData V4
cap-alp: no published releases, repository quiet for 25 months. Affects A recipe, Runnable code.
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
CAP - Dynamically hide UI facets in Fiori ElementsCAP - Dynamically hide UI facets in Fiori ElementsFacets hidden at runtime rather than at design time, which needs two things at once: UI.Hidden on the annotation side and a virtual element on the CDS side to decide it. Both are linked from the post, and it is barely two pages.AjayRathore, published 2023-12-08
CAP - Dynamically hide UI facets in Fiori Elements
Fiori annotations changed in @sap/cds-dk 9.6.0, 2025-12-17. Affects A recipe.
CAP with Fiori Elements: Actions on List Report / Object Page using Annotations - Part1CAP with Fiori Elements: Actions on List Report / Object Page using Annotations - Part1Actions on their own, at length — where an action can be placed, what the annotation looks like for each position, and what changes between the List Report and the Object Page. Part one of two.Ajit_K_Panda, published 2023-12-31
CAP with Fiori Elements: Actions on List Report / Object Page using Annotations - Part1
Fiori annotations changed in @sap/cds-dk 9.6.0, 2025-12-17. Affects A recipe, Runnable code.
CAP with Fiori Elements: Actions on List Report / Object Page using Annotations – Part2CAP with Fiori Elements: Actions on List Report / Object Page using Annotations – Part2The second half of the actions pair, published the same day. Between them they cover more ground on this one annotation than the documentation does in one place.Ajit_K_Panda, published 2023-12-31
CAP with Fiori Elements: Actions on List Report / Object Page using Annotations – Part2
Fiori annotations changed in @sap/cds-dk 9.6.0, 2025-12-17. Affects Runnable code.
CAP with Fiori Elements: Configure Multiple Views on List Report TablesCAP with Fiori Elements: Configure Multiple Views on List Report TablesSeveral tabs over one entity, each with its own filter — the multiple-views annotation, which is one of the few Fiori elements features that changes the shape of the page rather than its content.Ajit_K_Panda, published 2023-12-25
CAP with Fiori Elements: Configure Multiple Views on List Report Tables
Fiori annotations changed in @sap/cds-dk 9.6.0, 2025-12-17. Affects Runnable code.
Create Fiori List Report with object page using CAPM(node.js) ServiceCreate Fiori List Report with object page using CAPM(node.js) ServiceThe short version of the generated-app walkthrough — an existing CAPM Node.js service, and the List Report with Object Page on top of it. Under three thousand characters.Md_sanaullah, published 2023-09-06
Developing SAP Fiori Element application by using SAP Cloud Application Programming ModelDeveloping SAP Fiori Element application by using SAP Cloud Application Programming ModelThe long version, and it starts by naming the floorplans — List Report, Worklist, Object Page, Overview Page, Analytical List Page — which is the decision most walkthroughs skip. Then one of them, built out against a CAP service.shobhit, published 2023-08-07
Developing SAP Fiori Element application by using SAP Cloud Application Programming Model
Fiori annotations changed in @sap/cds-dk 9.6.0, 2025-12-17. Affects A recipe, 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.
Fiori Elements Analytical Table with CAP: Does it work with V2 and V4?Fiori Elements Analytical Table with CAP: Does it work with V2 and V4?A question in the title and an answer in the post, with the boundary drawn carefully: this is an analytical table inside a List Report, not the Analytical List Page, and the two protocol versions do not behave the same.published 2023-04-03
Fiori Elements Analytical Table with CAP: Does it work with V2 and V4?
Fiori annotations changed in @sap/cds-dk 9.6.0, 2025-12-17. Affects Runnable code.
Fiori Elements のList Reportアプリにカスタムアクションボタンを追加し、カスタムコントローラーを用いてアイコン化するFiori Elements のList Reportアプリにカスタムアクションボタンを追加し、カスタムコントローラーを用いてアイコン化するIn Japanese. A custom action button added to a generated List Report and then given an SAPUI5 icon through a custom controller — the point where an annotation-driven app needs a piece of code, and what that costs.takayuki_tanaka, published 2024-08-02
Side Effects in Fiori: Triggering Actions and Updating Data in Your Unmanaged RAP ApplicationSide Effects in Fiori: Triggering Actions and Updating Data in Your Unmanaged RAP ApplicationShows how to add a Common.SideEffects Fiori annotations block to an unmanaged RAP application's annotation.xml, naming the action and the navigation path of the entity set it should refresh, for the case the RAP layer does not refresh automatically: a bound action whose returned instance differs from the bound one, a copy action for example. Works through a "Redetermine All Quotations" button as the example and verifies the resulting POST and GET calls in the browser's network tab.VarunVarshney, published 2024-09-02
Use SAP CAP SAPUI5 Smart Filter to Show Value Help that are not Associated EntititesUse SAP CAP SAPUI5 Smart Filter to Show Value Help that are not Associated EntititesValue help for a field with no association behind it, which is the case the annotation assumes away. Short, and the workaround is the content.JhoelAnthonyRamosRomeroPE, published 2024-10-07
CAP, CORS and custom headersCAP, CORS and custom headersWhat CAP itself does about CORS, and where it stops. The starting point is a colleague's request and a deliberate constraint: @sap/approuter has full CORS support, but the author wanted to know what the CAP server offers on its own and how to extend it. Ends up covering preflight requests and custom servers, which is the mechanism a frontend hosted outside BTP actually runs into.published 2024-04-11
SAP Tech Bytes: Using the SAP Approuter at dev time - a full-stack journey with UI5 and CAPSAP Tech Bytes: Using the SAP Approuter at dev time - a full-stack journey with UI5 and CAPGetting UI5 Tooling and the CAP server onto one port under one command, using cds-plugin-ui5 — which the post presents as the thing that removes the proxy and destination configuration a full-stack dev setup otherwise needs. Part one of a journey that goes on to put the approuter in front at development time.published 2023-10-13
SAP Tech Bytes: Using the SAP Approuter at dev time - a full-stack journey with UI5 and CAP
cds-plugin-ui5 has been through 11 major lines since this was published, most recently 0.15 (2025-11), 0.16 (2025-12), 0.17 (2026-03). Affects Runnable code.
ISO content for common CAP typesISO content for common CAP typesThe npm package that supplies ISO-standard content — countries, languages, currencies, timezones — for CAP's common types, and how it works underneath. The author flags the length and the reason for it up front, having followed the mechanism further than the question required, which is what makes it worth reading rather than a package announcement.published 2024-03-14
ISO content for common CAP types
Seed data changed in @sap/cds-dk 7.9.1, 2024-05-02. Affects 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
Testing SAP Build Process Automation task UI in SAP Business Application StudioTesting SAP Build Process Automation task UI in SAP Business Application StudioA task UI built from the Workflow Task UI template cannot be run in Business Application Studio: it expects the task model and the inbox API as startup parameters, and without them it fails before the view renders. The post shows the error, explains why it happens, and supplies a wrapper that provides the missing context locally, so the alternative to deploying on every change is not deploying on every change.published 2023-10-15
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
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
A modern workflow for SAP Cloud Integration with CAP and Azure DevOpsA modern workflow for SAP Cloud Integration with CAP and Azure DevOpsCAP used to build tooling rather than an application: the development workflow for Cloud Integration is limited to what the Integration Suite offers, so the author puts a CAP service and Azure DevOps around it. An unusual use of the framework, and the reason to read it.marcel_schork62, published 2023-06-27
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
Consuming SAP Build API's made easy with SAP Cloud SDK in your CAP applicationConsuming SAP Build API's made easy with SAP Cloud SDK in your CAP applicationReaching into SBPA from CAP the other way round — reading its tasks and workflows rather than starting them. The author starts from the plain Axios version and says what it costs: the connection and the authentication are the work, not the call. Cloud SDK is used to generate a typed client from the OpenAPI document and then to resolve the connection through either a service binding or a destination, shown for client credentials and for user token exchange.maheshpalavalli, published 2023-02-08
Consuming SAP Build API's made easy with SAP Cloud SDK in your CAP application
Workflow integration has changed twice since this was published, most recently in @cap-js/n8n 0.0.1, 2026-08-27. Affects Runnable code.
Extensions for SAP Build Process Automation - Actions from CAP Node.js ServiceExtensions for SAP Build Process Automation - Actions from CAP Node.js ServiceThe direction of travel reversed: the CAP service is the thing being called, exposed as an Action so that a no-code process can consume it. Short by design — it is an introduction to a developer tutorial, and it says outright that the goal is to cover every step rather than to model a real use case.TJe, published 2023-01-13
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.
Trigger Build Process Automation Instance from S/4 HANA On-Premise using ABAP CodeTrigger Build Process Automation Instance from S/4 HANA On-Premise using ABAP CodeWalks through triggering a SAP Build Process Automation process instance by hand from an S/4HANA on-premise system: an SM59 destination of type G obtains an OAuth token from the process's service key, and an ABAP class with two methods — fetching that token and calling the triggering API — is exercised from a test SE38 program, with the full code left in the author's GitHub repository. The instance ID and status come back from the call, and completing the approval itself happens in the SBPA Monitor's Inbox app rather than in anything the post builds.Aashish28, published 2023-07-07
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.
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.
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