
Sap Btp Cloud Platform
- 231 installs
- 399 repo stars
- Updated August 4, 2026
- secondsky/sap-skills
Helps with ai & agent building tasks.
About
sap-btp-cloud-platform is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- sap-btp-cloud-platform
- AI & Agent Building
- AI-coding skill
Sap Btp Cloud Platform by the numbers
- 231 all-time installs (skills.sh)
- +41 installs in the week ending Jul 27, 2026 (Skillselion tracking)
- Ranked #2,663 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/secondsky/sap-skills --skill sap-btp-cloud-platformAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 231 |
|---|---|
| repo stars | ★ 399 |
| Last updated | August 4, 2026 |
| Repository | secondsky/sap-skills ↗ |
What it does
Helps with ai & agent building tasks.
Files
SAP BTP Cloud Platform
Related Skills
- sap-btp-best-practices: Use for architectural best practices, account setup guidance, and production deployment patterns
- sap-cap-capire: Use for CAP application development on BTP Cloud Foundry or Kyma environments
- sap-fiori-tools: Use for deploying Fiori applications to BTP or configuring BTP destinations
- sap-ai-core: Use when implementing AI/ML workloads on BTP or setting up AI services
- sap-abap: Use when working with ABAP Environment on BTP or extending S/4HANA Cloud
- sap-btp-connectivity: Use for setting up secure connections to on-premise systems via Cloud Connector
- sap-btp-service-manager: Use for programmatic service instance management on BTP
When to Use This Skill
Use this skill when setting up or operating SAP BTP accounts, directories, subaccounts, Cloud Foundry, Kyma, ABAP Environment, entitlements, quotas, role collections, CLI tooling, MTA deployments, connectivity, CI/CD, extensions, or platform troubleshooting.
Quick Start
1. Identify the target commercial account type, region, and subaccount. 2. Enable the runtime environment: Cloud Foundry, Kyma, ABAP Environment, or trial/free tier. 3. Configure identity, roles, entitlements, and quotas before deploying workloads. 4. Use btp and cf CLI examples in Tools for repeatable setup. 5. Switch to related skills for implementation depth: sap-cap-capire, sap-fiori-tools, sap-btp-connectivity, or sap-btp-service-manager.
Comprehensive reference for SAP Business Technology Platform covering all runtime environments, account management, security, and operations.
Documentation Source: https://github.com/SAP-docs/sap-btp-cloud-platform SAP Help Portal: https://help.sap.com/docs/btp SAP Discovery Center: https://discovery-center.cloud.sap/
Table of Contents
- 1. Platform Overview
- 2. Account Model
- 3. Environments
- 4. Commercial Models
- 5. Entitlements and Quotas
- 6. Regions and Infrastructure
- 7. User Management
- 8. Tools
- 9. Security Essentials
- 10. Connectivity
- 11. Development Patterns
- 12. CI/CD
- 13. Extensions
- 14. High Availability and Resilience
- 15. Operations and Monitoring
- 16. Support
- Bundled Resources
- Source Documentation
1. Platform Overview
SAP BTP integrates five technology portfolios: Application Development, Process Automation, Integration, Data & Analytics, and AI. Provides suite qualities: SAP Fiori UX, Cloud Identity Services, Master Data Integration, embedded analytics, SAP Task Center, and SAP Cloud ALM.
---
2. Account Model
Hierarchy
Global Account → Directory (optional) → Subaccount (region-specific)
↓ CF: Org → Spaces
↓ Kyma: Cluster → Namespaces
↓ ABAP: System instanceKey Entities
- Global Account: Contract with SAP, region-independent, manages entitlements
- Directory: Organizational container, up to 7 levels, optional entitlement management
- Subaccount: Region-specific deployment target hosting apps and services
- Labels: Metadata tags (up to 10 values per label)
Account Types
- Trial: 90-day free exploration (4GB memory, 10 routes, 40 services, daily stops)
- Enterprise: Production use based on commercial contract
- Free Tier: Long-term testing with service-specific limits, no SLA
---
3. Environments
SAP BTP offers four runtime environments at the subaccount level:
Cloud Foundry Environment
Open PaaS with polyglot support. Features: multiple buildpacks (Java, Node.js, Python, Go, PHP), spaces for separation, auto-scaling, SAP HANA integration.
cf login -a https://api.cf.<region>.hana.ondemand.com
cf push my-app
cf bind-service my-app my-service-instanceStructure: Subaccount → Org (1:1) → Spaces
Kyma Environment
Managed Kubernetes runtime based on open-source Kyma.
- Default Modules: istio (service mesh), api-gateway, btp-operator
- Optional Modules: serverless, eventing, application-connector, telemetry, keda
Structure: Subaccount → Cluster (1:1) → Namespaces
ABAP Environment
Cloud ABAP development with RAP, CDS, SAP Fiori integration, ADT, 1:1 SAP HANA database per system. Use Cases: Extend S/4HANA Cloud, build new cloud applications, transform ABAP custom code
Neo Environment
Status: Sunsetting December 31, 2028. Recommendation: Migrate to CF/Kyma.
---
4. Commercial Models
Consumption-Based
Access all eligible services with flexible usage. Flavors: SAP BTPEA, CPEA, Pay-As-You-Go. Benefits: Switch services on/off, access current and future services.
Subscription-Based
Fixed cost for selected services, pay irrespective of consumption. Additional services require contract modification.
Best Practice: Use consumption-based for pilots, subscription for stable workloads.
5. Entitlements and Quotas
Definitions
- Entitlement: Right to provision and consume a service plan
- Quota: Numeric quantity of consumption allowed
- Service Plan: Variant of a service (e.g., t-shirt sizes)
Quota Types
- Fixed: Upper limit (subscription model)
- Unlimited: No limit, billed by usage (consumption model)
Distribution Flow
Global Account → Directory (reserves) → Subaccount (consumes) → CF Space (optional)
---
6. Regions and Infrastructure
Region Providers
| Provider | Examples |
|---|---|
| SAP | eu10, us10, ap10 |
| AWS | eu10, us10, ap10, ap11, ap12 |
| Azure | eu20, us20, ap20, jp20 |
| Google Cloud | us30, in30 |
| Alibaba Cloud | cn40 |
Key Considerations
- Each subaccount assigned to exactly one region
- Multi-region requires separate deployments
- EU Access available in specific regions for compliance
- API endpoints vary by region instance
Availability Zones
Multi-AZ deployment for high availability:
- Isolated power, network, cooling
- Automatic failover within region
- Both CF and Kyma support multi-AZ
---
7. User Management
User Types
| Type | Description | Example |
|---|---|---|
| Platform Users | Manage BTP infrastructure | Developers, administrators |
| Business Users | Use deployed applications | End users, customers |
Identity Providers
| Provider | Use Case |
|---|---|
| SAP ID Service | Default, SAP community users |
| SAP Cloud Identity Services | Recommended for production |
| Corporate IdP | Via Identity Authentication proxy |
Authorization Flow
Identity Provider
↓
SAP BTP (Shadow Users)
↓
Role Collections
↓
Application/Service Access---
8. Tools
Key Tools Overview
- Administration: SAP BTP Cockpit (web), btp CLI (automation), REST APIs, Terraform, SAP Automation Pilot
- Development: SAP Business Application Studio (VS Code-based), SAP Build (low-code), SAP Cloud SDK (Java/JS), ADT for Eclipse (ABAP)
- Kubernetes/Kyma: kubectl, kubelogin (OIDC), Helm, Pack (buildpacks), Docker Desktop
Essential CLI Commands
# btp CLI
btp login --url https://cpcli.cf.<region>.hana.ondemand.com
btp list accounts/subaccount
btp create accounts/subaccount --display-name "Dev"
btp assign security/role-collection "Subaccount Administrator" --to-user user@example.com
# CF CLI
cf login -a https://api.cf.<region>.hana.ondemand.com
cf target -o my-org -s my-space
cf push my-app
cf bind-service my-app my-service
# kubectl
kubectl get pods -n my-namespace
kubectl apply -f deployment.yaml
kubectl logs -f deployment/my-app---
9. Security Essentials
Authentication
Recommended: Corporate IdP → SAP Cloud Identity Services → SAP BTP
XSUAA provides OAuth 2.0 authorization, role-based access control, and application security descriptors (xs-security.json).
Trust Configuration
1. Configure Identity Authentication tenant 2. Establish trust in subaccount 3. Map role collections to IdP groups 4. Assign users via role collections
Best Practices
- Use TLS 1.2+ (mandatory)
- Enable MFA for administrators
- Maintain backup administrators in default IdP
- Use provisioning over federation for production
- Implement audit logging
10. Connectivity
Destinations
Connect to remote systems without hardcoding URLs. Key authentication methods:
NoAuthentication(public APIs)OAuth2ClientCredentials(service-to-service)OAuth2SAMLBearerAssertion(user propagation)PrincipalPropagation(on-premise with Cloud Connector)
Cloud Connector
Secure tunnel for on-premise connectivity with no inbound firewall ports, fine-grained access control, RFC/HTTP support, and principal propagation.
---
11. Development Patterns
Programming Models
- CAP: Java/Node.js/TypeScript for enterprise services, domain-driven development
- ABAP Cloud: Cloud-ready ABAP with RAP
Multi-Target Applications (MTA)
Package multiple modules for deployment. Core structure includes modules (app types: nodejs, html5) and resources (services like hana).
Application Router
Single entry point providing static content serving, user authentication, URL rewriting, and request forwarding to microservices.
12. CI/CD
SAP Continuous Integration and Delivery
Managed service supporting Cloud Foundry apps (Fiori, CAP), SAP Fiori for ABAP Platform, and SAP Integration Suite artifacts.
Pipeline Setup
1. Activate service in BTP cockpit 2. Assign Administrator/Developer roles 3. Configure repository credentials 4. Add code repository (GitHub, GitLab, Bitbucket, Azure Repos) 5. Create and configure CI/CD jobs
Delivery Options
- CI/CD: Java/HTML5/CAP, Kyma apps (Cloud Integration in development)
- Cloud Transport Mgmt: Java/HTML5/CAP, Cloud Integration, SAP Build Work Zone
---
13. Extensions
Extension Architecture
Build loosely coupled extensions: SAP Solution → APIs & Events → SAP BTP Extension → Custom Business Logic
System Registration
1. Register systems in global account 2. Create formations (logical groupings) 3. Enable API/event exchange 4. Deploy extensions
Supported Solutions
- Cloud Foundry: S/4HANA Cloud, Marketing Cloud, SuccessFactors
- Kyma: Above + Commerce Cloud, Field Service Management
14. High Availability and Resilience
Resilience Strategies
- Multi-AZ: Deploy across availability zones
- Multi-Region: Deploy across geographic regions
- In-Metro DR: Synchronous replication within region
Failover Implementation
1. Deploy in two data centers 2. Keep applications synchronized (CI/CD) 3. Define failover detection (5xx errors, timeouts) 4. Plan failback procedure
SLAs
- RPO: Maximum 5 minutes data loss
- RTO: Service restoration within 2 hours
15. Operations and Monitoring
Key Tools
- SAP Cloud ALM: Real user and health monitoring
- SAP Cloud Logging: Observability across CF, Kyma
- SAP Alert Notification: Multi-channel notifications
- Audit Log Viewer: Activity tracking
Best Practices
- Deploy multiple application instances
- Implement Application Autoscaler
- Use blue-green deployment for updates
- Set up automated alerting
- Regular compliance verification
---
16. Support
Getting Support
- SAP for Me: https://me.sap.com/
- SAP Community: https://community.sap.com/
- Support Components: BC-CP-* (component codes)
Operating Model
- SAP manages: Platform software updates, infrastructure monitoring, BTP service monitoring, global account provisioning
- You manage: Account strategy, application development and security, role assignments and integrations, application monitoring
Bundled Resources
Reference Documentation
For detailed guidance, see the 13 reference files:
references/glossary.md- Complete terminology (40+ terms)references/cloud-foundry.md- CF development and administrationreferences/kyma.md- Kyma runtime and Kubernetes patternsreferences/abap.md- ABAP environment, RAP, CDSreferences/security.md- Authentication, authorization, identityreferences/connectivity.md- Destinations, Cloud Connectorreferences/development.md- Development patterns, MTA, Application Routerreferences/administration.md- Account management, btp CLIreferences/operations.md- Monitoring, alerting, loggingreferences/extensions.md- SAP solution extensions, formationsreferences/tools.md- CLI references, development toolsreferences/troubleshooting.md- Common issues and solutionsreferences/regions-endpoints.md- Region-specific API endpoints
Source Documentation
- https://github.com/SAP-docs/sap-btp-cloud-platform
- https://help.sap.com/docs/btp
- https://discovery-center.cloud.sap/
Last Verified: 2025-11-27
SAP BTP Cloud Platform Skill
Comprehensive SAP Business Technology Platform reference for cloud development, deployment, and operations.
Capability Index
| Capability | Status |
|---|---|
| Commands | 1: /btp-subaccount-readiness |
| Agents | 1: btp-platform-advisor |
| Hooks | No |
| MCP | No |
| LSP | No |
| Source Freshness | last_verified: 2025-11-27; live BTP account and entitlement checks pending. |
| Verification | npm run validate; tenant/subaccount checks require BTP access. |
Overview
This skill provides documentation-audited guidance for SAP BTP, covering the three runtime environments (Cloud Foundry, Kyma, ABAP), account management, security, connectivity, and operations. Its last_verified date is stale until BTP account, entitlement, and primary-source checks are refreshed.
When to Use This Skill
Use this skill when:
- Setting up BTP accounts: Global accounts, directories, subaccounts, entitlements
- Working with Cloud Foundry: Orgs, spaces, buildpacks, service bindings, CF CLI
- Deploying to Kyma: Kubernetes, modules, serverless functions, Helm charts
- Developing in ABAP environment: RAP, CDS, ADT, Fiori integration
- Managing entitlements and quotas: Commercial models, service plans
- Configuring identity providers: SAP Cloud Identity Services, XSUAA, trust
- Implementing authentication/authorization: Role collections, trust configuration
- Using BTP tools: btp CLI, CF CLI, kubectl, Terraform
- Deploying multi-target applications: MTA structure, deployment
- Setting up connectivity: Destinations, Cloud Connector, principal propagation
- Implementing CI/CD: SAP Continuous Integration and Delivery, pipelines
- Extending SAP solutions: S/4HANA Cloud, SuccessFactors, formations
- Troubleshooting BTP services: Common issues, error resolution
Keywords
SAP BTP, SAP Business Technology Platform, Cloud Foundry, CF, Kyma, ABAP environment, subaccount, global account, directory, entitlements, quotas, btp CLI, CF CLI, MTA, multi-target application, XSUAA, SAP Authorization and Trust Management, Cloud Identity Services, Identity Authentication, destinations, Cloud Connector, service binding, buildpack, Kubernetes, serverless, RAP, CDS, CAP, SAP Cloud Application Programming Model, CI/CD, SAP Continuous Integration and Delivery, extensions, formations, trial account, free tier, enterprise account, consumption-based, subscription-based, CPEA, BTPEA, regions, availability zones, high availability, disaster recovery, audit logging, role collections, platform users, business users, Neo environment, service broker, space, org, namespace, Helm, Docker, Istio, API Gateway, Eventing, create subaccount, deploy application, configure trust, bind service, scale application, deploy MTA, create destination, setup Cloud Connector, configure XSUAA, assign role collection
Source Documentation
- Main Repository: https://github.com/SAP-docs/sap-btp-cloud-platform
- SAP Help Portal: https://help.sap.com/docs/btp
- SAP Discovery Center: https://discovery-center.cloud.sap/
- BTP Best Practices: https://github.com/SAP-docs/btp-best-practices-guide
Skill Structure
sap-btp-cloud-platform/
├── SKILL.md # Main skill content (336 lines, optimized)
├── README.md # This file
└── references/ # 13 comprehensive reference files
├── glossary.md # Complete terminology (40+ terms)
├── cloud-foundry.md # CF environment, CLI, buildpacks
├── kyma.md # Kyma modules, Kubernetes, serverless
├── abap.md # ABAP environment, RAP, CDS, ADT
├── security.md # Authentication, XSUAA, role collections
├── connectivity.md # Destinations, Cloud Connector
├── development.md # MTA, CAP, Application Router, CI/CD
├── tools.md # btp CLI, CF CLI, kubectl, Terraform
├── extensions.md # S/4HANA, SuccessFactors, formations
├── administration.md # Account management, entitlements
├── operations.md # Monitoring, logging, alerting, health
├── regions-endpoints.md # All regions and API endpoints
└── troubleshooting.md # Common issues and solutionsCoverage
This skill extracts and organizes content from 1683 documentation files in the official SAP BTP documentation repository, with 13 reference files totaling 7,000+ lines:
| Section | Coverage | Reference File |
|---|---|---|
| Platform Concepts | 100% | SKILL.md |
| Account Model & Entitlements | 100% | administration.md |
| Cloud Foundry Environment | 95% | cloud-foundry.md |
| Kyma Environment | 95% | kyma.md |
| ABAP Environment | 95% | abap.md |
| Security & Identity | 95% | security.md |
| Extensions & Formations | 90% | extensions.md |
| Regions & Endpoints | 100% | regions-endpoints.md |
| Development Patterns | 90% | development.md |
| Connectivity | 90% | connectivity.md |
| Operations & Monitoring | 90% | operations.md |
| Tools & CLI | 95% | tools.md |
| Troubleshooting | 85% | troubleshooting.md |
Token Efficiency
| Scenario | Without Skill | With Skill (v1.1.0) | Savings |
|---|---|---|---|
| BTP account setup | ~15k tokens | ~3.5k tokens | 77% |
| CF deployment | ~10k tokens | ~2.5k tokens | 75% |
| Security configuration | ~12k tokens | ~3.5k tokens | 71% |
| Average | ~12k tokens | ~3.2k tokens | ~73% |
Maintenance
- Last Verified: 2025-11-27
- Next Review: 2026-02-27 (Quarterly)
Related Skills
sap-btp-best-practices- Enterprise architecture and governancesap-cap- Cloud Application Programming Model developmentbtp-cloud-transport-management- Transport and deployment managementbtp-job-scheduling- Job scheduling servicebtp-service-manager- Service instance management
License
GPL-3.0
ABAP Environment Reference
Complete guidance for SAP BTP ABAP environment development and administration.
Source: https://github.com/SAP-docs/sap-btp-cloud-platform/tree/main/docs/10-concepts
---
Table of Contents
1. ABAP Environment Overview 2. Service Plans and Metering 3. System Creation 4. Development Tools 5. Programming Model 6. Communication Management 7. Lifecycle Management 8. Integration
---
ABAP Environment Overview
The ABAP environment enables cloud ABAP development on SAP BTP.
Key Features
- Latest ABAP platform cloud release
- SAP HANA database (1:1 per system)
- ABAP RESTful Application Programming Model (RAP)
- Core Data Services (CDS)
- SAP Fiori integration
- Released objects approach for APIs
Use Cases
| Use Case | Description |
|---|---|
| Extensions | Extend S/4HANA Cloud, SuccessFactors |
| New Apps | Build cloud-native ABAP applications |
| Transformation | Move existing ABAP to cloud |
| Side-by-Side | Complement SAP solutions |
Architecture
ABAP System Instance
├── ABAP Runtime (Memory: ABAP Compute Units)
├── SAP HANA Database (Storage: HANA Compute Units)
├── Fiori Launchpad
└── Web Access (ADT, Launchpad)---
Service Plans and Metering
Service Plans
| Plan | Use Case | Requirements |
|---|---|---|
| free | Proof of concept | Auto-stops nightly, no SLA |
| standard | Dev/Test/Prod | Min 2 HANA CU + 1 ABAP CU |
| saas_oem | Multitenancy SaaS | Min 2 HANA CU + 1 ABAP CU |
Compute Units
ABAP Compute Unit (ACU):
- Configures runtime memory
- Measured in 16 GB blocks
- Volatile memory for application execution
- Billed hourly
HANA Compute Unit (HCU):
- Configures persistent storage
- Measured in 16 GB blocks
- Retains data after restart
- Billed hourly
Entitlement Requirements
For standard plan, assign all three: 1. abap service with standard plan 2. abap_compute_unit with quantity 3. hana_compute_unit with quantity
Minimum Configuration
| Component | Minimum |
|---|---|
| HANA Compute Units | 2 |
| ABAP Compute Units | 1 |
| Total Memory | 48 GB (32 HANA + 16 ABAP) |
Free Plan Limitations
- Auto-stops every night
- Manual restart via Landscape Portal
- Community support only
- No SLA
- Limited resources
---
System Creation
Prerequisites
1. Subaccount with Cloud Foundry enabled 2. ABAP environment entitlements assigned 3. Space created
Create via BTP Cockpit
1. Navigate to Subaccount > Cloud Foundry > Spaces 2. Open target space 3. Click SAP HANA Cloud or Service Marketplace 4. Find ABAP environment 5. Create instance with parameters:
{
"admin_email": "admin@example.com",
"description": "Development System",
"is_development_allowed": true,
"sapsystemname": "DEV",
"size_of_runtime": 1,
"size_of_persistence": 4
}Create via CF CLI
cf create-service abap standard my-abap-system -c '{
"admin_email": "admin@example.com",
"description": "Development System",
"is_development_allowed": true,
"sapsystemname": "DEV",
"size_of_runtime": 1,
"size_of_persistence": 4
}'System Parameters
| Parameter | Description |
|---|---|
admin_email | Initial admin user email |
sapsystemname | 3-char system ID |
is_development_allowed | Enable dev features |
size_of_runtime | ABAP Compute Units |
size_of_persistence | HANA Compute Units |
---
Development Tools
ABAP Development Tools (ADT)
Eclipse-based IDE for ABAP development:
1. Install Eclipse (latest supported version) 2. Install ADT plugin from SAP update site 3. Connect to ABAP system
ADT Update Site: https://tools.hana.ondemand.com/latest
ADT Features
- ABAP Editor with code completion
- CDS Editor
- Debugger
- Unit Test Runner
- Transport Management
- Git Integration (abapGit)
Connecting ADT
1. File > New > ABAP Cloud Project 2. Select SAP BTP, ABAP Environment 3. Enter service key or use browser login 4. Select system and log in
Service Key for ADT
cf create-service-key my-abap-system my-key
cf service-key my-abap-system my-keyWeb Access
| Component | URL Pattern |
|---|---|
| Fiori Launchpad | https://<system>.abap.<region>.hana.ondemand.com/ |
| SAP GUI for HTML | Via Fiori Launchpad |
| ADT | Via Eclipse with service key |
---
Programming Model
ABAP RESTful Application Programming Model (RAP)
Modern ABAP development approach:
CDS Data Model → Behavior Definition → Service Definition → Service BindingCDS Data Model
@AccessControl.authorizationCheck: #CHECK
define root view entity ZI_Product
as select from zproduct
{
key product_id as ProductId,
product_name as ProductName,
@Semantics.amount.currencyCode: 'Currency'
price as Price,
currency as Currency
}Behavior Definition
managed implementation in class zbp_i_product unique;
strict ( 2 );
define behavior for ZI_Product alias Product
persistent table zproduct
lock master
authorization master ( instance )
{
create;
update;
delete;
field ( readonly ) ProductId;
field ( mandatory ) ProductName;
validation validateProduct on save { create; update; }
determination setDefaults on modify { create; }
}Service Definition
@EndUserText.label: 'Product Service'
define service ZUI_PRODUCT {
expose ZI_Product as Product;
}Service Binding
Create via ADT: 1. Right-click service definition 2. New > Service Binding 3. Select binding type (OData V2/V4, UI) 4. Activate and publish
---
Communication Management
Communication Scenarios
Predefined integration patterns:
| Type | Description |
|---|---|
| Inbound | External calls to ABAP |
| Outbound | ABAP calls external systems |
Communication Arrangement
Communication Scenario → Communication System → Communication UserCreating Outbound Communication
1. Create Communication System (target system details) 2. Create Outbound Communication User (credentials) 3. Create Communication Arrangement (link scenario + system)
HTTP Destination
DATA(lo_destination) = cl_http_destination_provider=>create_by_comm_arrangement(
comm_scenario = 'Z_MY_SCENARIO'
service_id = 'Z_MY_SERVICE'
).
DATA(lo_client) = cl_web_http_client_manager=>create_by_http_destination( lo_destination ).
DATA(lo_response) = lo_client->execute( if_web_http_client=>get ).---
Lifecycle Management
Software Components
Git-based source code management:
Software Component (Git repo)
├── Package 1
│ ├── Classes
│ ├── CDS Views
│ └── Services
└── Package 2Transport Management
| Transport Type | Use |
|---|---|
| Workbench | Development objects |
| Customizing | Configuration |
Release and Import
1. Release transport request in source system 2. Export via gCTS or Cloud Transport Management 3. Import to target system
Landscape Configuration
Development → Test → Production
↓ ↓ ↓
Clone Import Import---
Integration
Integrated SAP BTP Services
| Service | Integration |
|---|---|
| SAP Destination Service | Connectivity |
| SAP Build Work Zone | Launchpad |
| SAP Build Process Automation | Workflows |
| SAP Forms by Adobe | PDF forms |
| SAP Cloud Identity Services | Authentication |
Fiori Elements
Automatic UI generation from CDS annotations:
@UI.headerInfo: {
typeName: 'Product',
typeNamePlural: 'Products',
title: { type: #STANDARD, value: 'ProductName' }
}
@UI.lineItem: [{ position: 10, label: 'Product ID' }]
@UI.identification: [{ position: 10 }]
ProductId,---
Regions
Available Regions
| Region | Provider | Technical Name |
|---|---|---|
| EU (Frankfurt) | AWS | eu10 |
| US East | AWS | us10 |
| Japan (Tokyo) | AWS | jp10 |
| Australia (Sydney) | AWS | ap10 |
| Singapore | AWS | ap11 |
| EU (Netherlands) | Azure | eu20 |
| US West | Azure | us20 |
| Japan (Tokyo) | Azure | jp20 |
---
Related Documentation
- ABAP Environment: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/10-concepts/abap-environment-11d6265.md
- Service Plans: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/10-concepts/service-plans-and-metering-for-sap-btp-abap-environment-b7f5a93.md
- Getting Started: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/20-getting-started/getting-started-in-the-abap-environment-2ffdd24.md
- SAP Help Portal: https://help.sap.com/docs/btp/sap-business-technology-platform/abap-environment
Administration Reference
Complete guidance for SAP BTP account administration and operations.
Source: https://github.com/SAP-docs/sap-btp-cloud-platform/tree/main/docs/50-administration-and-ops
---
Table of Contents
1. Account Administration 2. Entitlement Management 3. User and Role Management 4. Default Role Collections 5. Environment Management 6. Service Management 7. Monitoring and Logging 8. Backup and Recovery
---
Account Administration
Global Account Operations
# List subaccounts
btp list accounts/subaccount
# Get global account details
btp get accounts/global-account
# Update global account
btp update accounts/global-account --display-name "New Name"Subaccount Operations
# Create subaccount
btp create accounts/subaccount \
--display-name "Development" \
--subdomain dev-acme \
--region eu10 \
--subaccount-admins admin@example.com
# Update subaccount
btp update accounts/subaccount <id> \
--display-name "New Name" \
--description "Updated description"
# Delete subaccount
btp delete accounts/subaccount <id>
# Move subaccount to directory
btp move accounts/subaccount <id> --to-directory <dir-id>Directory Operations
# Create directory
btp create accounts/directory \
--display-name "Business Unit A" \
--directory-features ENTITLEMENTS,AUTHORIZATIONS
# List directories
btp list accounts/directory
# Delete directory
btp delete accounts/directory <id>Labels
# Add label to subaccount
btp add accounts/label --subaccount <id> \
--name "Environment" --value "Development"
# List labels
btp list accounts/label --subaccount <id>
# Remove label
btp remove accounts/label --subaccount <id> --name "Environment"---
Entitlement Management
View Entitlements
# Global account entitlements
btp list accounts/entitlement
# Subaccount assignments
btp list accounts/entitlement --subaccount <id>Assign Entitlements
# Assign to subaccount
btp assign accounts/entitlement \
--to-subaccount <id> \
--for-service hana-cloud \
--plan hana \
--amount 1
# Assign to directory
btp assign accounts/entitlement \
--to-directory <id> \
--for-service xsuaa \
--plan application \
--amount 10Common Services to Assign
| Service | Plan | Description | Availability |
|---|---|---|---|
cloudfoundry | standard | CF runtime | All CF regions |
kymaruntime | aws / azure / gcp | Kyma runtime | Selected regions only |
abap | standard | ABAP environment | Selected regions only |
hana-cloud | hana | HANA Cloud database | All regions |
xsuaa | application | Authorization service | All regions |
destination | lite | Destination service | All regions |
connectivity | lite | Connectivity service | All regions |
application-logs | lite | Application logging | All regions |
Note: Services marked "Selected regions only" require checking regional availability in BTP Cockpit
or SAP Discovery Center before assignment. Kyma/ABAP availability varies by IaaS provider and region.
---
User and Role Management
User Operations
# Assign user to role collection
btp assign security/role-collection "Subaccount Administrator" \
--to-user user@example.com \
--of-idp sap.ids
# Remove user from role collection
btp unassign security/role-collection "Subaccount Administrator" \
--from-user user@example.com \
--of-idp sap.ids
# List role collection assignments
btp list security/role-collectionGroup Mapping
# Map IdP group to role collection
btp assign security/role-collection "Developers" \
--to-group "BTP_Developers" \
--of-idp my-corporate-idp
# Remove group mapping
btp unassign security/role-collection "Developers" \
--from-group "BTP_Developers" \
--of-idp my-corporate-idpTrust Configuration
# List trust configurations
btp list security/trust
# Get trust details
btp get security/trust <idp-origin>---
Default Role Collections
Global Account Level
| Role Collection | Description |
|---|---|
| Global Account Administrator | Full access to global account, entitlements, subaccounts |
| Global Account Viewer | Read-only access to global account |
Directory Level
| Role Collection | Description |
|---|---|
| Directory Administrator | Manage directory, entitlements, subaccounts |
| Directory Viewer | Read-only access to directory |
Subaccount Level
| Role Collection | Description |
|---|---|
| Subaccount Administrator | Full access to subaccount |
| Subaccount Viewer | Read-only access to subaccount |
| Subaccount Service Administrator | Manage service brokers |
| Cloud Connector Administrator | Manage Cloud Connector |
| Destination Administrator | Manage destinations and trust |
| Connectivity and Destination Administrator | Combined CC + destinations |
Cloud Foundry Roles
| Role | Description |
|---|---|
| Org Manager | Manage org settings, spaces, quotas |
| Org Auditor | View-only access to org |
| Space Manager | Manage space settings, members |
| Space Developer | Deploy apps, manage services |
| Space Auditor | View-only access to space |
---
Environment Management
Cloud Foundry
# Create CF environment
btp create accounts/environment-instance \
--subaccount <id> \
--environment cloudfoundry \
--plan standard \
--landscape eu10-004
# List environments
btp list accounts/environment-instance --subaccount <id>
# Delete environment
btp delete accounts/environment-instance <env-id> --subaccount <id>Kyma
# Create Kyma environment
btp create accounts/environment-instance \
--subaccount <id> \
--environment kyma \
--plan aws \
--parameters '{"name":"my-kyma"}'
# Get Kyma kubeconfig
# Download from BTP Cockpit or use Kyma Dashboard---
Service Management
Service Instances
# Discover available services and plans
cf marketplace
# CF CLI - Create service instance
cf create-service <service> <plan> <name> -c '<parameters>'
# CF CLI - List services
cf services
# CF CLI - Update service
cf update-service <name> -p <new-plan> -c '<parameters>'
# CF CLI - Delete service
cf delete-service <name>Service Bindings
# Bind to app
cf bind-service <app> <service> -c '<parameters>'
# Create service key (for external access)
cf create-service-key <service> <key-name>
# View service key
cf service-key <service> <key-name>Service Broker Management
# Register service broker
cf create-service-broker <name> <user> <password> <url>
# List brokers
cf service-brokers
# Delete broker
cf delete-service-broker <name>---
Monitoring and Logging
SAP Cloud ALM
Integration for:
- Real User Monitoring
- Health Monitoring
- Integration Monitoring
- Exception Monitoring
- Job Automation Monitoring
Application Logging
# CF - View logs
cf logs <app> --recent
cf logs <app> # tail
# Subscribe to Application Logging service
cf create-service application-logs lite my-logs
cf bind-service my-app my-logsAudit Logging
Access via:
- SAP Audit Log Viewer Service (subscription)
- Audit Log Retrieval API
# API access
curl -X GET "https://auditlog.cf.<region>.hana.ondemand.com/v2/auditlogrecords" \
-H "Authorization: Bearer <token>"Alert Notification
Configure alerts for:
- Application events
- Service events
- Platform events
Channels:
- Slack
- ServiceNow
- SAP Cloud ALM
---
Backup and Recovery
SAP-Managed Backups
| Service | Backup | Recovery |
|---|---|---|
| SAP HANA Cloud | Continuous | Point-in-time restore |
| PostgreSQL (Hyperscaler) | 14-day retention | Point-in-time restore |
| Redis | No persistence | N/A |
| Object Store | Versioning available | Manual |
Customer Responsibilities
You must backup:
- Service configurations
- Destination settings
- Trust configurations
- Application configurations
- Custom code (Git repositories)
Kyma Backup
- Managed Kubernetes snapshots
- Excludes persistent volumes
- Use Velero for volume backups
Cloud Foundry Apps
- No built-in backup
- Keep code in external Git
- Export service configurations
- Document environment variables
---
Automation
Terraform Provider
provider "btp" {
globalaccount = "my-global-account"
}
resource "btp_subaccount" "dev" {
name = "Development"
subdomain = "dev-acme"
region = "eu10"
}
resource "btp_subaccount_entitlement" "cf" {
subaccount_id = btp_subaccount.dev.id
service_name = "APPLICATION_RUNTIME"
plan_name = "MEMORY"
amount = 1
}SAP Automation Pilot
Low-code automation for:
- Scheduled operations
- Event-triggered workflows
- Multi-step procedures
---
Related Documentation
Cloud Foundry Environment Reference
Detailed guidance for SAP BTP Cloud Foundry environment development and administration.
Source: https://github.com/SAP-docs/sap-btp-cloud-platform/tree/main/docs/10-concepts CF Docs: https://docs.cloudfoundry.org/
---
Table of Contents
1. Architecture 2. Account Structure 3. Buildpacks 4. Service Bindings 5. Application Deployment 6. CF CLI Commands 7. Space Management 8. Availability Zones
---
Architecture
Cloud Foundry in SAP BTP
- Open Platform-as-a-Service (PaaS)
- Polyglot application support
- SAP HANA extended application services integration
- Multiple buildpacks for language support
- Automatic scaling and load balancing
Hierarchy
Subaccount (1:1 with CF Org)
└── Organization (Org)
├── Space: Development
│ ├── Applications
│ └── Service Instances
├── Space: Testing
└── Space: Production---
Account Structure
Organizations (Orgs)
- Each CF subaccount contains exactly one org
- Org name derived from subaccount name
- Use for grouping related spaces
Spaces
Spaces provide environment separation within an org:
| Configuration | Subaccount Level | Space Level |
|---|---|---|
| Business user groups | Yes | No |
| Cloud Connector tunnels | Yes | No |
| Trust/roles settings | Yes | No |
| Quota assignment | Mandatory | Optional |
Space Quota Plans
Optional resource limits per space:
# Create space quota
cf create-space-quota my-quota -m 4G -i 1G -r 10 -s 5
# Assign to space
cf set-space-quota my-space my-quota---
Buildpacks
SAP-Provided Buildpacks
| Buildpack | Language | Notes |
|---|---|---|
sap_java_buildpack | Java | SAP JVM, Jakarta EE |
nodejs_buildpack | Node.js | LTS versions |
python_buildpack | Python | 3.x versions |
go_buildpack | Go | Latest versions |
staticfile_buildpack | Static HTML | HTML5 apps |
Specifying Buildpacks
# manifest.yml
applications:
- name: my-app
buildpacks:
- nodejs_buildpack
memory: 256M
disk_quota: 512MCustom Buildpacks
applications:
- name: my-app
buildpack: https://github.com/my-org/my-buildpack.git---
Service Bindings
Service Marketplace
# List available services
cf marketplace
# Create service instance
cf create-service hana hdi-shared my-hana
# Bind to application
cf bind-service my-app my-hanaService Keys
For external access without binding:
# Create service key
cf create-service-key my-service my-key
# Get credentials
cf service-key my-service my-keyUser-Provided Services
For external services not in marketplace:
cf create-user-provided-service my-external-service -p '{"url":"https://api.example.com","key":"xxx"}'VCAP_SERVICES
Environment variable containing bound service credentials:
const services = JSON.parse(process.env.VCAP_SERVICES);
const hanaCredentials = services.hana[0].credentials;---
Application Deployment
manifest.yml
applications:
- name: my-app
memory: 512M
disk_quota: 1G
instances: 2
path: ./target/my-app.jar
buildpacks:
- sap_java_buildpack
env:
JBP_CONFIG_SAPJVM: "[default_vm: jdk]"
routes:
- route: my-app.cfapps.eu10.hana.ondemand.com
services:
- my-hana
- my-xsuaaDeployment Commands
# Deploy application
cf push
# Deploy with manifest override
cf push -f manifest-prod.yml
# Deploy specific path
cf push my-app -p ./dist
# Scale instances
cf scale my-app -i 3
# Scale memory
cf scale my-app -m 1GBlue-Green Deployment
# Deploy new version with different name
cf push my-app-new -f manifest.yml
# Map route to new version
cf map-route my-app-new cfapps.eu10.hana.ondemand.com --hostname my-app
# Unmap route from old version
cf unmap-route my-app cfapps.eu10.hana.ondemand.com --hostname my-app
# Delete old version
cf delete my-app -f
# Rename new version
cf rename my-app-new my-app---
CF CLI Commands
Authentication
# Login
cf login -a https://api.cf.eu10.hana.ondemand.com
# Login with SSO
cf login -a https://api.cf.eu10.hana.ondemand.com --sso
# Target org/space
cf target -o my-org -s my-spaceApplication Management
# List applications
cf apps
# View app details
cf app my-app
# Start/stop/restart
cf start my-app
cf stop my-app
cf restart my-app
# View logs
cf logs my-app --recent
cf logs my-app # tail
# SSH into container
cf ssh my-app
# Set environment variable
cf set-env my-app MY_VAR "value"
cf restage my-appService Management
# List services
cf services
# Create service
cf create-service <service> <plan> <name>
# Update service
cf update-service <name> -p <new-plan>
# Delete service
cf delete-service <name>
# Bind/unbind
cf bind-service <app> <service>
cf unbind-service <app> <service>Routes
# List routes
cf routes
# Create route
cf create-route my-space cfapps.eu10.hana.ondemand.com --hostname my-app
# Map route to app
cf map-route my-app cfapps.eu10.hana.ondemand.com --hostname my-app
# Delete route
cf delete-route cfapps.eu10.hana.ondemand.com --hostname my-app---
Space Management
Space Roles
| Role | Permissions |
|---|---|
| Space Manager | Manage space settings, add members |
| Space Developer | Deploy apps, manage services |
| Space Auditor | View-only access |
Assign Roles
# Set space role
cf set-space-role user@example.com my-org my-space SpaceDeveloper
# Unset space role
cf unset-space-role user@example.com my-org my-space SpaceDeveloperOrg Roles
| Role | Permissions |
|---|---|
| Org Manager | Manage org, spaces, quotas, billing |
| Org Auditor | View-only for org settings |
| Billing Manager | View billing information |
---
Availability Zones
Multi-AZ Deployment
Cloud Foundry distributes application instances across availability zones automatically when:
1. Multiple instances are running (instances: 2+) 2. Region supports multiple AZs
Benefits
- Independent power, network, cooling
- Automatic failover within region
- Improved application availability
Configuration
No special configuration required. CF Controller distributes instances automatically.
applications:
- name: my-app
instances: 3 # Distributed across AZs---
Supported Features
Supported
- Diego runtime
- Application manifests
- Service bindings
- SSH access
- Health monitoring
- Autoscaling (via Application Autoscaler)
- Container-to-container networking
Not Supported
- DEA runtime (deprecated)
- Some community plugins may not work
---
Related Documentation
- CF Environment Concepts: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/10-concepts/cloud-foundry-environment-9c7092c.md
- Regions and Endpoints: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/10-concepts/regions-and-api-endpoints-available-for-the-cloud-foundry-environment-f344a57.md
- Getting Started: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/20-getting-started/getting-started-in-the-cloud-foundry-environment-b328cc8.md
- Official CF Docs: https://docs.cloudfoundry.org/
Connectivity Reference
Complete guidance for SAP BTP connectivity including destinations and Cloud Connector.
Source: https://github.com/SAP-docs/sap-btp-cloud-platform/tree/main/docs/30-development
---
Table of Contents
1. Destinations Overview 2. Authentication Methods 3. Cloud Connector 4. Principal Propagation 5. Destination Service API
---
Destinations Overview
Destinations abstract connection details from application code:
Benefits
- Separation of configuration from code
- Secure credential storage
- Runtime resolution of connection details
- Central management in BTP Cockpit
Destination Types
| Type | Description |
|---|---|
| HTTP | REST APIs, web services |
| RFC | SAP RFC connections |
| LDAP | Directory services |
| SMTP connections |
Proxy Types
| Proxy | Use Case |
|---|---|
| Internet | Cloud services, public APIs |
| OnPremise | On-premise systems via Cloud Connector |
| PrivateLink | AWS/Azure private connectivity |
---
Authentication Methods
NoAuthentication
Public APIs without authentication:
{
"Name": "public-api",
"Type": "HTTP",
"URL": "https://api.example.com",
"ProxyType": "Internet",
"Authentication": "NoAuthentication"
}BasicAuthentication
Username/password (testing only):
{
"Name": "basic-auth",
"Type": "HTTP",
"URL": "https://api.example.com",
"ProxyType": "Internet",
"Authentication": "BasicAuthentication",
"User": "username",
"Password": "password"
}OAuth2ClientCredentials
Service-to-service:
{
"Name": "oauth2-client",
"Type": "HTTP",
"URL": "https://api.example.com",
"ProxyType": "Internet",
"Authentication": "OAuth2ClientCredentials",
"clientId": "my-client-id",
"clientSecret": "my-client-secret",
"tokenServiceURL": "https://auth.example.com/oauth/token"
}OAuth2SAMLBearerAssertion
User propagation to cloud services:
{
"Name": "saml-bearer",
"Type": "HTTP",
"URL": "https://api.example.com",
"ProxyType": "Internet",
"Authentication": "OAuth2SAMLBearerAssertion",
"audience": "https://audience.example.com",
"clientKey": "my-client-id",
"tokenServiceURL": "https://auth.example.com/oauth/token",
"tokenServiceURLType": "Dedicated",
"authnContextClassRef": "urn:oasis:names:tc:SAML:2.0:ac:classes:PreviousSession"
}OAuth2JWTBearer
Token exchange (preferred over OAuth2UserTokenExchange):
{
"Name": "jwt-bearer",
"Type": "HTTP",
"URL": "https://api.example.com",
"ProxyType": "Internet",
"Authentication": "OAuth2JWTBearer",
"clientId": "my-client-id",
"clientSecret": "my-client-secret",
"tokenServiceURL": "https://auth.example.com/oauth/token"
}PrincipalPropagation
On-premise with Cloud Connector:
{
"Name": "onprem-pp",
"Type": "HTTP",
"URL": "http://virtualhost:port",
"ProxyType": "OnPremise",
"Authentication": "PrincipalPropagation",
"CloudConnectorLocationId": "location1"
}ClientCertificateAuthentication
mTLS:
{
"Name": "mtls",
"Type": "HTTP",
"URL": "https://api.example.com",
"ProxyType": "Internet",
"Authentication": "ClientCertificateAuthentication",
"KeyStoreLocation": "keystore.p12",
"KeyStorePassword": "password"
}Note: The keystore file (.p12or.jks) must be uploaded to the destination
configuration in BTP Cockpit before referencing it. Upload via: Connectivity →
Destinations → destination properties → Upload and Delete Certificates.
Authentication Method Compatibility
| Method | Internet | OnPremise | Private Link |
|---|---|---|---|
| NoAuthentication | Yes | Yes | Yes |
| BasicAuthentication | Yes | Yes | Yes |
| OAuth2ClientCredentials | Yes | No | Yes |
| OAuth2SAMLBearerAssertion | Yes | No | Yes |
| OAuth2JWTBearer | Yes | No | Yes |
| PrincipalPropagation | No | Yes | No |
| ClientCertificateAuthentication | Yes | Yes | Yes |
---
Cloud Connector
Overview
Lightweight on-premise agent providing:
- Secure tunnel to SAP BTP
- No inbound firewall ports required
- Fine-grained access control
- Principal propagation support
Installation
1. Download from SAP Software Download Center 2. Install on on-premise network 3. Configure connection to SAP BTP subaccount 4. Define accessible resources
Architecture
SAP BTP Application
↓ (HTTPS)
Connectivity Service
↓ (TLS tunnel)
Cloud Connector (on-premise)
↓ (HTTP/RFC)
On-Premise SystemConfiguration Scopes
| Scope | Configuration |
|---|---|
| Subaccount | One Cloud Connector per subaccount |
| Location ID | Multiple connectors per subaccount |
| Access Control | Resource-level permissions |
Virtual Host Mapping
Map internal systems to virtual hosts:
Virtual Host: sap-erp-virtual:443
→ Internal System: erp.internal.company.com:443Access Control
Define which resources are accessible:
| Setting | Description |
|---|---|
| Protocol | HTTP, HTTPS, RFC |
| Internal Host | Actual system hostname |
| Virtual Host | Exposed hostname to BTP |
| Path | URL path prefix |
| Method | HTTP methods allowed |
High Availability
Architecture:
- Master connector: Active, handles all traffic
- Shadow connector: Standby, monitors master health
- Automatic failover if master becomes unavailable
Setup: 1. Install Cloud Connector on two separate hosts 2. Configure first as master (connects to BTP) 3. Configure second as shadow (points to master) 4. Shadow automatically takes over if master fails
Configuration:
Master: cc-master.internal.company.com:8443
Shadow: cc-shadow.internal.company.com:8443
→ Points to master for health checks
→ Same subaccount/location ID configurationBest Practices:
- Deploy master and shadow on different physical hosts
- Use different network segments if possible
- Monitor both instances via Cloud Connector admin UI
- Test failover periodically
Monitoring
- Connection status in BTP Cockpit
- Audit logs
- Performance metrics
---
Principal Propagation
On-Premise via Cloud Connector
Forward user identity to on-premise systems:
User authenticates → BTP App → Cloud Connector → On-Premise
(SAML) (X.509 cert) (user context)Requirements: 1. Cloud Connector with SNC or X.509 2. Destination with PrincipalPropagation 3. On-premise system configured for SSO
SAP System Configuration
For SAP ERP/S4: 1. Configure trusted certificate in STRUST 2. Enable SSO in SICF 3. Map certificate subject to user
Cloud-to-Cloud
Use OAuth2SAMLBearerAssertion or OAuth2JWTBearer:
// Using SAP Cloud SDK
const destination = await getDestination('my-destination');
const response = await executeHttpRequest(destination, {
method: 'GET',
url: '/api/resource'
});---
Destination Service API
Get Destination
# Get single destination
curl -X GET "https://destination-configuration.cfapps.<region>.hana.ondemand.com/destination-configuration/v1/destinations/<name>" \
-H "Authorization: Bearer <token>"Response
{
"owner": {
"SubaccountId": "...",
"InstanceId": "..."
},
"destinationConfiguration": {
"Name": "my-destination",
"Type": "HTTP",
"URL": "https://api.example.com",
"Authentication": "OAuth2ClientCredentials",
"ProxyType": "Internet"
},
"authTokens": [
{
"type": "Bearer",
"value": "...",
"expires_in": "3600"
}
]
}Using in Applications
Node.js (CAP/Cloud SDK):
const { getDestination, executeHttpRequest } = require('@sap-cloud-sdk/core');
const destination = await getDestination('my-destination');
const response = await executeHttpRequest(destination, {
method: 'GET',
url: '/api/resource'
});Java (Cloud SDK):
HttpDestination destination = DestinationAccessor
.getDestination("my-destination")
.asHttp();
HttpClient client = HttpClientAccessor.getHttpClient(destination);
HttpResponse response = client.execute(new HttpGet("/api/resource"));---
Related Documentation
- Connectivity Service: https://help.sap.com/docs/connectivity
- Cloud Connector: https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/cloud-connector
- Destinations: https://github.com/SAP-docs/sap-btp-cloud-platform/tree/main/docs/30-development
Development Reference
Development patterns and best practices for SAP BTP applications.
Source: https://github.com/SAP-docs/sap-btp-cloud-platform/tree/main/docs/30-development
---
Table of Contents
1. Multi-Target Applications 2. Application Router 3. CAP Development 4. Service Bindings 5. CI/CD Pipelines 6. Deployment Strategies
---
Multi-Target Applications
MTA Structure
my-app/
├── mta.yaml # MTA descriptor
├── srv/ # Backend service
│ ├── package.json
│ └── src/
├── app/ # Frontend
│ └── webapp/
├── db/ # Database artifacts
│ └── src/
└── xs-security.json # Security configmta.yaml Template
_schema-version: "3.1"
ID: my-app
version: 1.0.0
description: My SAP BTP Application
parameters:
enable-parallel-deployments: true
build-parameters:
before-all:
- builder: custom
commands:
- npm install --production
modules:
# Backend service
- name: my-app-srv
type: nodejs
path: srv
parameters:
buildpack: nodejs_buildpack
memory: 256M
build-parameters:
builder: npm
requires:
- name: my-app-db
- name: my-app-auth
provides:
- name: srv-api
properties:
srv-url: ${default-url}
# Database deployer
- name: my-app-db-deployer
type: hdb
path: db
parameters:
buildpack: nodejs_buildpack
requires:
- name: my-app-db
# UI module
- name: my-app-ui
type: html5
path: app
build-parameters:
builder: custom
commands:
- npm run build
supported-platforms: []
# App Router
- name: my-app-approuter
type: approuter.nodejs
path: approuter
parameters:
disk-quota: 256M
memory: 256M
requires:
- name: my-app-auth
- name: srv-api
group: destinations
properties:
name: srv-api
url: ~{srv-url}
forwardAuthToken: true
resources:
# HDI Container
- name: my-app-db
type: com.sap.xs.hdi-container
parameters:
service: hana
service-plan: hdi-shared
# XSUAA
- name: my-app-auth
type: org.cloudfoundry.managed-service
parameters:
service: xsuaa
service-plan: application
path: ./xs-security.jsonBuild and Deploy
# Build MTA archive
mbt build
# Deploy
cf deploy mta_archives/my-app_1.0.0.mtar
# Deploy with options
cf deploy my-app.mtar --strategy blue-green---
Application Router
Purpose
- Single entry point for applications
- User authentication
- Static content serving
- URL routing to microservices
- Session management
xs-app.json
{
"welcomeFile": "/index.html",
"authenticationMethod": "route",
"sessionTimeout": 30,
"routes": [
{
"source": "^/api/(.*)$",
"target": "$1",
"destination": "srv-api",
"authenticationType": "xsuaa",
"csrfProtection": true
},
{
"source": "^/(.*)$",
"target": "$1",
"localDir": "webapp",
"authenticationType": "xsuaa"
}
]
}Authentication Types
| Type | Description |
|---|---|
xsuaa | Require authentication |
none | No authentication |
basic | Basic auth (dev only) |
Route Properties
| Property | Description |
|---|---|
source | Regex pattern for incoming URL |
target | Rewritten path |
destination | Destination name |
localDir | Serve from local directory |
csrfProtection | Enable CSRF tokens |
scope | Required authorization scope |
Environment Variables
{
"destinations": [
{
"name": "srv-api",
"url": "https://my-srv.cfapps.eu10.hana.ondemand.com",
"forwardAuthToken": true
}
]
}---
CAP Development
Project Setup
# Create new project
cds init my-project
# Add features
cds add hana
cds add xsuaa
cds add mtaService Definition (CDS)
// srv/catalog-service.cds
using { my.bookshop as my } from '../db/schema';
service CatalogService {
@readonly entity Books as projection on my.Books;
entity Orders as projection on my.Orders;
}Data Model
// db/schema.cds
namespace my.bookshop;
entity Books {
key ID : Integer;
title : String;
author : Association to Authors;
stock : Integer;
}
entity Authors {
key ID : Integer;
name : String;
books : Association to many Books on books.author = $self;
}
entity Orders {
key ID : UUID;
book : Association to Books;
amount : Integer;
}Service Implementation
// srv/catalog-service.js
module.exports = cds.service.impl(async function() {
const { Books, Orders } = this.entities;
this.before('CREATE', 'Orders', async (req) => {
const { book_ID, amount } = req.data;
const book = await SELECT.one.from(Books).where({ ID: book_ID });
if (book.stock < amount) {
req.error(409, 'Not enough stock');
}
});
this.after('CREATE', 'Orders', async (order, req) => {
await UPDATE(Books)
.set({ stock: { '-=': order.amount } })
.where({ ID: order.book_ID });
});
});Running Locally
# Start with watch (SQLite in-memory)
cds watch
# With hybrid profile (remote services, local app)
cds watch --profile hybrid
# Deploy to database
cds deploy --to hanaProfile Options:
| Profile | Description | Use Case |
|---|---|---|
default | SQLite in-memory, mock auth | Initial development, quick testing |
hybrid | Connect to remote BTP services while running locally | Test with real HANA, XSUAA, destinations |
production | Full BTP services | Deployed application |
Hybrid Profile Setup (.cdsrc.json):
{
"[hybrid]": {
"requires": {
"db": {
"kind": "hana",
"credentials": { "from": "env:VCAP_SERVICES" }
},
"auth": {
"kind": "xsuaa",
"credentials": { "from": "env:VCAP_SERVICES" }
}
}
}
}Run cds bind to fetch service credentials, then cds watch --profile hybrid.
---
Service Bindings
Accessing Bound Services
Environment Variable (VCAP_SERVICES):
const vcap = JSON.parse(process.env.VCAP_SERVICES);
const hanaCredentials = vcap.hana[0].credentials;Using @sap/xsenv:
const xsenv = require('@sap/xsenv');
xsenv.loadEnv();
const hanaCredentials = xsenv.serviceCredentials({ tag: 'hana' });Using CAP:
// Automatic binding via cds.requires in package.json
const db = await cds.connect.to('db');package.json (CAP)
{
"cds": {
"requires": {
"db": {
"kind": "hana",
"credentials": {
"binding": "db"
}
},
"auth": {
"kind": "xsuaa"
}
}
}
}---
CI/CD Pipelines
SAP Continuous Integration and Delivery
Pipeline types: 1. Cloud Foundry - Fiori, CAP 2. SAP Fiori for ABAP Platform 3. SAP Integration Suite Artifacts
Pipeline Configuration
# .pipeline/config.yml
general:
buildTool: mta
mtaBuildTool: cloudMbt
stages:
Build:
npmExecuteBefore:
dockerImage: 'node:18'
Integration:
credentials:
cfCredentialsId: cf-credentials
Release:
cfSpace: prod
cfCredentialsId: cf-credentialsGitHub Actions Example
name: Deploy to BTP
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install dependencies
run: npm ci
- name: Build MTA
run: npx mbt build
- name: Deploy to CF
env:
CF_API: ${{ secrets.CF_API }}
CF_USER: ${{ secrets.CF_USER }}
CF_PASSWORD: ${{ secrets.CF_PASSWORD }}
run: |
cf login -a $CF_API -u $CF_USER -p $CF_PASSWORD -o $CF_ORG -s $CF_SPACE
cf deploy mta_archives/*.mtar -f---
Deployment Strategies
Rolling Deployment (Default)
Replace instances one by one:
cf push my-appBlue-Green Deployment
Zero-downtime with instant rollback:
# Deploy new version
cf push my-app-new -f manifest.yml
# Map production route
cf map-route my-app-new cfapps.eu10.hana.ondemand.com -n my-app
# Unmap from old
cf unmap-route my-app cfapps.eu10.hana.ondemand.com -n my-app
# Delete old version
cf delete my-app -f
# Rename
cf rename my-app-new my-appWith MTA:
cf deploy my-app.mtar --strategy blue-greenCanary Deployment
Gradual traffic shift:
# Deploy canary with different route
cf push my-app-canary -f manifest-canary.yml
# Gradually shift traffic (manual or with load balancer)---
Related Documentation
- Development Guide: https://github.com/SAP-docs/sap-btp-cloud-platform/tree/main/docs/30-development
- CAP Documentation: https://cap.cloud.sap/docs/
- MTA Guide: https://help.sap.com/docs/btp/sap-business-technology-platform/multitarget-applications
Extensions Reference
Complete guidance for extending SAP solutions using SAP BTP.
Source: https://github.com/SAP-docs/sap-btp-cloud-platform/tree/main/docs/40-extensions
---
Table of Contents
1. Extensions Overview 2. Formations 3. System Registration 4. S/4HANA Cloud Extensions 5. SuccessFactors Extensions 6. Event Mesh Integration 7. Configuration Files 8. Troubleshooting
---
Extensions Overview
SAP BTP enables loosely coupled extensions without disrupting core SAP solution processes.
Extension Capabilities
| Capability | Description |
|---|---|
| API Access | Consume SAP solution APIs |
| Event Consumption | React to SAP solution events |
| UI Extensions | Extend SAP Fiori interfaces |
| Side-by-Side | Build companion apps |
Supported SAP Solutions
| Solution | Cloud Foundry | Kyma |
|---|---|---|
| SAP S/4HANA Cloud | Yes | Yes |
| SAP SuccessFactors | Yes | Yes |
| SAP Marketing Cloud | Yes | Yes |
| SAP Commerce Cloud | - | Yes |
| SAP Field Service Management | - | Yes |
| SAP Customer Experience | - | Yes |
Extension Architecture
SAP Solution (S/4HANA, SuccessFactors)
↓ APIs & Events
SAP BTP (Unified Customer Landscape)
↓ Formations
Extension Application (CF or Kyma)---
Formations
Formations are logical groupings of SAP systems for common business scenarios.
Formation Types
| Type | Purpose |
|---|---|
| Business Scenario | Group systems for specific use cases |
| Service Integration | Connect to BTP services |
| Extensibility | Enable extension development |
Formation Status
| Status | Description |
|---|---|
| Ready | Successfully configured |
| Draft | Incomplete, missing systems |
| Action Required | Needs additional setup |
| Synchronizing | Systems syncing in background |
| Error | Sync failed, needs resync |
Creating Formations
1. Navigate to System Landscape > Formations in BTP Cockpit 2. Click Create Formation 3. Enter unique name (max 128 chars) 4. Select formation type 5. Add registered systems 6. Review and confirm
Formation Management
BTP Cockpit → System Landscape → Formations
├── Create Formation
├── Add Systems
├── Finalize Formation
├── Resynchronize (on error)
└── Delete Formation---
System Registration
Register SAP systems to enable extensions.
Registration Process
1. Generate Token: Create registration token in BTP Cockpit 2. Configure System: Use token in SAP solution admin 3. Verify Connection: Check system status in BTP
System Types
| System Type | Registration Method |
|---|---|
| SAP S/4HANA Cloud | Registration token |
| SAP SuccessFactors | Registration token |
| SAP Marketing Cloud | Registration token |
| Third-party Systems | Manual configuration |
| SAP BTP Applications | Service instance |
Register S/4HANA Cloud System
BTP Cockpit → System Landscape → Systems
├── Add System
├── System Type: SAP S/4HANA Cloud
├── Generate Token
└── Complete in S/4HANA Cloud AdminRegister SuccessFactors System
BTP Cockpit → System Landscape → Systems
├── Add System
├── System Type: SAP SuccessFactors
├── Generate Token
└── Complete in SuccessFactors Provisioning---
S/4HANA Cloud Extensions
Extension Setup Steps
1. Register System in global account 2. Configure Entitlements for subaccounts 3. Create Service Instance (api-access or messaging plan) 4. Build Extension in CF or Kyma
Service Plans
| Plan | Purpose |
|---|---|
api-access | Consume S/4HANA APIs |
messaging | Consume S/4HANA events |
API Access Configuration
{
"systemName": "MY_S4HANA_SYSTEM",
"communicationArrangement": {
"communicationArrangementName": "MY_ARRANGEMENT",
"scenarioId": "SAP_COM_0008",
"inboundAuthentication": "OAuth2SAMLBearerAssertion",
"outboundAuthentication": "BasicAuthentication",
"outboundServices": [
{
"name": "Business Partner (A2X)",
"isServiceActive": true
}
]
}
}Supported Authentication
| Method | Use Case |
|---|---|
| BasicAuthentication | Simple scenarios |
| OAuth2SAMLBearerAssertion | User propagation |
| OAuth2ClientCredentials | Service-to-service |
| NoAuthentication | Public APIs |
Event Consumption
1. Configure SAP Event Mesh entitlements 2. Create Event Mesh service instance 3. Create S/4HANA extensibility instance (messaging plan) 4. Subscribe to events
---
SuccessFactors Extensions
Extension Setup
1. Register System in global account 2. Configure SSO (optional) 3. Configure Entitlements 4. Create Service Instance
SSO Configuration
SuccessFactors → Identity Authentication → SAP BTPSteps: 1. Configure SuccessFactors as trusted IdP in BTP 2. Configure subaccount as trusted service provider in SuccessFactors 3. Test SSO flow
API Access
{
"systemName": "MY_SFSF_SYSTEM",
"technicalUser": "TECHNICAL_USER",
"technicalUserSecret": "xxx"
}---
Event Mesh Integration
Event Mesh Architecture
SAP Solution → Event Mesh → Extension App
(CloudEvents)Event Mesh Service Plans
| Plan | Purpose |
|---|---|
default | Standard eventing |
development | Non-production |
Event Mesh Descriptor
{
"emname": "my-event-mesh",
"namespace": "my/namespace",
"rules": {
"queueRules": {
"publishFilter": ["${namespace}/*"],
"subscribeFilter": ["${namespace}/*"]
},
"topicRules": {
"publishFilter": ["${namespace}/*"],
"subscribeFilter": ["${namespace}/*"]
}
}
}Create Queues and Subscribe
# Create queue
cf create-service-key my-event-mesh my-key
# Subscribe to topic
# Use Event Mesh UI or REST API---
Configuration Files
Communication Arrangement JSON
{
"communicationArrangementName": "MY_ARRANGEMENT",
"scenarioId": "SAP_COM_0008",
"inboundAuthentication": "OAuth2SAMLBearerAssertion",
"outboundAuthentication": "BasicAuthentication",
"inboundServices": [
{
"serviceName": "Business Partner API",
"isServiceActive": true
}
],
"outboundServices": [
{
"name": "Business Partner (A2X)",
"isServiceActive": true
}
]
}Communication Arrangement YAML
communicationArrangementName: MY_ARRANGEMENT
scenarioId: SAP_COM_0008
inboundAuthentication: OAuth2SAMLBearerAssertion
outboundAuthentication: BasicAuthentication
inboundServices:
- serviceName: Business Partner API
isServiceActive: true
outboundServices:
- name: Business Partner (A2X)
isServiceActive: trueAPI Access Configuration
{
"systemName": "MY_SYSTEM",
"communicationArrangement": {
"communicationArrangementName": "INBOUND_COMM_ARRANGEMENT",
"scenarioId": "SAP_COM_0008",
"inboundAuthentication": "OAuth2SAMLBearerAssertion"
}
}---
Troubleshooting
Common Issues
| Issue | Solution |
|---|---|
| Service instance creation failed | Check entitlements, verify system registration |
| Event consumption not working | Verify Event Mesh configuration, check topic subscriptions |
| API access denied | Check communication arrangement, verify authentication |
| System not visible | Verify registration token was used, check system status |
S/4HANA Extensibility Issues
| Error | Resolution |
|---|---|
| Instance creation failed (no message) | Check communication arrangement JSON syntax |
| Messaging plan unavailable | Configure Event Mesh entitlements first |
| API authentication failed | Verify OAuth configuration in S/4HANA |
SuccessFactors Issues
| Error | Resolution |
|---|---|
| OData destination not working | Verify technical user credentials |
| SSO not working | Check trust configuration both sides |
| Instance creation failed | Verify system registration complete |
---
Region Limitations
Extensions functionality is NOT available in:
- China (Shanghai) region
- Government Cloud (US) region
---
Related Documentation
- Extensions: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/40-extensions/extensions-08b1eff.md
- Formations: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/40-extensions/automating-integrations-using-formations-68b04fa.md
- S/4HANA Extensions: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/40-extensions/extending-sap-s-4hana-cloud-in-the-cloud-foundry-and-kyma-environment-40b9e6c.md
- SuccessFactors Extensions: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/40-extensions/extending-sap-successfactors-in-the-cloud-foundry-and-kyma-environment-9e33934.md
SAP BTP Glossary
Complete terminology reference for SAP Business Technology Platform.
Source: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/glossary-e67a143.md
---
A
Application
Software hosted on SAP BTP used by business users to complete tasks. Created by developers utilizing platform services.
Application Router
Single entry point for applications in Cloud Foundry environment. Handles static content serving, user authentication, URL rewriting, and request forwarding to microservices.
Availability
The durability and operational performance without failure of a system or component for an agreed amount of time, as defined in the contract.
Availability Zone (AZ)
A physically isolated location with independent power, network, and cooling infrastructure that acts as an individual failure domain within a region.
---
B
Block-hours
A measurement unit representing one compute block's runtime for one hour. Multiple blocks multiply the count accordingly.
Booster
A set of guided interactive steps that enable you to select, configure, and consume services on SAP BTP to achieve a specific technical goal.
btp CLI
The command line tool for all tasks on global account, directory, and subaccount level, such as creating or updating subaccounts, authorization management, and working with service brokers and platforms.
Buildpack
Provides framework and runtime support for applications in the Cloud Foundry environment.
Business Service
Platform services that enable, facilitate, or accelerate the development of business process components and elements of an application.
---
C
Cloud Connector
Serves as the link between on-demand applications in SAP BTP and existing on-premise systems. Lightweight agent establishing secure tunnel.
Cloud Foundry CLI
Command-line interface tool for deploying and managing applications in the Cloud Foundry environment.
Cloud Management Tools
Technologies designed for managing SAP BTP. Internally known as Foundation.
Cockpit
The central point of entry to key information about your accounts and applications, and for managing all activities associated with your account.
Connectivity
Provides secure, reliable access to business systems or remote services running on-premises or in the cloud.
---
D
Destination
A configuration that contains the connection details for a remote communication partner. Allows separation of application code from configuration.
Disaster
An event declared by SAP when there is a loss of utilities and services, and uncertainty about whether they can be restored within a reasonable period of time.
Disaster Recovery (DR)
A set of policies, tools, and procedures to protect applications by preserving and rapidly resuming their availability in case of a disaster.
Durability
The ability of a system to permanently store data without loss or corruption.
---
E
Enterprise Account
An enterprise account is usually associated with one SAP customer or partner and is typically subject to charges.
Entitlement
Your right to provision and consume a resource (service plan) on SAP BTP.
Environment
Constitutes the SAP BTP actual Platform-as-a-Service offering that allows for the development and administration of applications.
---
F
Failover
The automated or manually triggered process of switching from one system to another redundant system in case of an unexpected or planned downtime.
Formation
A logical grouping of SAP systems that can be extended in a single business scenario. Enables communication between systems.
---
G
Global Account
The realization of a contract you made with SAP. A global account is region- and environment-independent, and it is used to manage subaccounts, members, entitlements and quotas.
---
I
Identity Provider (IdP)
An authorization authority containing all user information and credentials. In SAP BTP, user information is provided by identity providers, not stored in SAP BTP itself.
In-Metro Disaster Recovery
Solution using synchronous data replication across multiple AZs within a single region to protect against localized disasters.
---
K
Kyma Environment
A fully managed cloud-native Kubernetes application runtime based on the open-source project Kyma.
Kyma Module
Modular component that can be selectively installed on a Kyma cluster to provide specific functionality.
---
M
Member
Indicates a user's assignment to an account. As an account member, a user automatically has the permissions required to use the SAP BTP functionality within the scope of the respective account and as permitted by their account member roles.
Multi-Target Application (MTA)
A package consisting of multiple modules that are deployed together on SAP BTP.
---
O
OAuth
Widely adopted security protocol for protecting resources over the Internet, used by social networks and corporate networks.
Org (Organization)
A hierarchical level in the account structure of SAP BTP using a Cloud Foundry subaccount. Each Cloud Foundry subaccount contains exactly one Cloud Foundry org.
---
P
Platform Service
Software that enables, facilitates, or accelerates the development of applications and other platform services on SAP BTP.
Platform User
User who manages and administers SAP BTP (developer, administrator, operator).
Principal Propagation
Forwarding of user identity from one system to another for single sign-on and authorization.
Programming Model
A set of concepts, languages, runtimes, and APIs used to create applications on SAP BTP.
---
Q
Quota
A numeric quantity that defines the maximum allowed consumption of a specific technical asset/resource.
---
R
Region
A geographical location (e.g., Europe, US East) where applications, data, or services are hosted. Usually consists of two or more availability zones.
Resilience
The ability to provide and maintain an acceptable level of service in the face of faults and challenges until normal operation is restored.
Role Collection
A group of roles assigned to users or groups to grant specific authorizations.
Runtime
An engine or context for executing programs, such as Java Web Tomcat or Node.js.
---
S
SAP BTP, Cloud Foundry Environment
An open Platform-as-a-Service, which provides a scalable runtime container and a choice of clouds, runtimes, and services.
SAP BTP, Kyma Runtime
A runtime developers can use to build cloud-native Kubernetes-based extensions to SAP by using microservices and serverless Functions.
SAP BTP, Neo Environment
An enterprise Platform-as-a-Service providing a range of services (sunsetting December 31, 2028).
SAP Cloud Application Programming Model (CAP)
A framework of languages, libraries, and tools for building enterprise-grade services and applications. Supports Java, JavaScript, and TypeScript.
SAP ID Service
The default identity provider for SAP BTP applications. Manages the user base for SAP Community Network and other SAP websites.
SAPUI5
A development toolkit providing UI controls for developing Web applications.
Service Broker
When a developer provisions and binds a service to an application, the service broker for that service is responsible for providing the service instance and for binding services to applications.
Service Plan
A variant of a service; for example, a database may be configured with various "t-shirt sizes", each of which is a different service plan.
Shadow User
A copy of a user from an identity provider stored in SAP BTP for authorization purposes.
Space
In the Cloud Foundry environment, every application and service is scoped to a space. A space provides users with access to a shared location for application development, deployment, and maintenance.
Staging
The process in the Cloud Foundry environment by which the raw bits of an application are transformed into a droplet that is ready to execute.
Subaccount
Lets you structure a global account according to customer requirements with regards to members, authorizations and quotas. Where actual deployments occur.
---
T
Technical Service
Platform services that enable, facilitate, or accelerate the generic development of an application, independent of the application's business process or task.
Tool
A means for users to develop, configure, monitor and administer a service or entities managed by a service.
Trial Account
90-day complimentary platform exploration with restricted resources.
---
U
User-Provided Service Instance
User-provided service instances enable you to use services that are not available in the marketplace with your applications running in the Cloud Foundry environment.
---
X
XSUAA
SAP Authorization and Trust Management Service. OAuth 2.0 authorization server for SAP BTP applications.
xs-security.json
Application security descriptor defining scopes, roles, and attributes for XSUAA.
---
Related Documentation
Kyma Environment Reference
Detailed guidance for SAP BTP Kyma environment development and administration.
Source: https://github.com/SAP-docs/sap-btp-cloud-platform/tree/main/docs/10-concepts Kyma Project: https://kyma-project.io/
---
Table of Contents
1. Architecture 2. Modules 3. Namespaces 4. Deployment Patterns 5. Service Consumption 6. Serverless Functions 7. Eventing 8. Security 9. kubectl Commands
---
Architecture
Kyma in SAP BTP
- Fully managed Kubernetes runtime
- Based on open-source Kyma project
- Built on Gardener-managed Kubernetes clusters
- Modular architecture with selectable components
- 1:1 relationship: Subaccount → Kyma Cluster
Supported Technologies
- CAP (Cloud Application Programming Model)
- SAP Cloud SDK
- Application Router
- HTML5 Deployer
- Docker containers
- Helm charts
Structure
Subaccount (1:1 with Kyma Cluster)
└── Kubernetes Cluster
├── kyma-system (SAP managed)
├── namespace: dev
│ ├── Deployments
│ ├── Services
│ └── Functions
├── namespace: test
└── namespace: prod---
Modules
Default Modules (Always Installed)
| Module | Purpose |
|---|---|
istio | Service mesh with Kyma-specific configuration |
api-gateway | Expose and secure APIs |
btp-operator | Consume SAP BTP services via Kubernetes |
Optional Modules
| Module | Purpose |
|---|---|
serverless | Deploy simple code functions |
eventing | CloudEvents pub/sub (NATS or SAP Event Mesh) |
application-connector | Integrate external systems |
telemetry | Collect logs and traces |
keda | Event-driven autoscaling |
nats | NATS cluster for eventing |
cloud-manager | Cloud provider product integration |
Module Management
# List available modules
kubectl get kymas -n kyma-system
# Add module via BTP Cockpit or kubectl
kubectl patch kyma default -n kyma-system --type merge -p '
spec:
modules:
- name: serverless
'Community Modules
User-provided modules without:
- Automatic updates
- SLA coverage
- SAP support
---
Namespaces
Best Practices
- Use namespaces for environment separation
- Apply resource quotas per namespace
- Implement network policies for isolation
Create Namespace
# namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: my-app
labels:
istio-injection: enabledkubectl apply -f namespace.yamlResource Quotas
apiVersion: v1
kind: ResourceQuota
metadata:
name: my-quota
namespace: my-app
spec:
hard:
requests.cpu: "4"
requests.memory: 8Gi
limits.cpu: "8"
limits.memory: 16Gi
pods: "20"---
Deployment Patterns
Standard Deployment
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: my-namespace
spec:
replicas: 2
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-registry/my-app:latest
ports:
- containerPort: 8080
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"Service
apiVersion: v1
kind: Service
metadata:
name: my-app
namespace: my-namespace
spec:
selector:
app: my-app
ports:
- port: 80
targetPort: 8080API Rule (Expose API)
apiVersion: gateway.kyma-project.io/v1beta1
kind: APIRule
metadata:
name: my-app
namespace: my-namespace
spec:
gateway: kyma-gateway.kyma-system.svc.cluster.local
host: my-app
service:
name: my-app
port: 80
rules:
- path: /.*
methods: ["GET", "POST", "PUT", "DELETE"]
accessStrategies:
- handler: jwt
config:
jwks_urls:
- https://<subaccount>.authentication.<region>.hana.ondemand.com/token_keysHelm Chart
# Install with Helm
helm install my-app ./my-chart -n my-namespace
# Upgrade
helm upgrade my-app ./my-chart -n my-namespace
# Rollback
helm rollback my-app 1 -n my-namespace---
Service Consumption
SAP BTP Operator
Consume SAP BTP services via Kubernetes resources:
# ServiceInstance
apiVersion: services.cloud.sap.com/v1
kind: ServiceInstance
metadata:
name: my-hana
namespace: my-namespace
spec:
serviceOfferingName: hana-cloud
servicePlanName: hana
parameters:
memory: 32
---
# ServiceBinding
apiVersion: services.cloud.sap.com/v1
kind: ServiceBinding
metadata:
name: my-hana-binding
namespace: my-namespace
spec:
serviceInstanceName: my-hana
secretName: my-hana-credentialsUsing Credentials
env:
- name: HANA_URL
valueFrom:
secretKeyRef:
name: my-hana-credentials
key: url---
Serverless Functions
Function Definition
apiVersion: serverless.kyma-project.io/v1alpha2
kind: Function
metadata:
name: my-function
namespace: my-namespace
spec:
runtime: nodejs20
source:
inline:
source: |
module.exports = {
main: async function (event, context) {
const message = event.data?.message || "Hello World";
return { statusCode: 200, body: { message } };
}
};
resourceConfiguration:
function:
resources:
requests:
cpu: "50m"
memory: "64Mi"
limits:
cpu: "100m"
memory: "128Mi"Expose Function
apiVersion: gateway.kyma-project.io/v1beta1
kind: APIRule
metadata:
name: my-function
namespace: my-namespace
spec:
gateway: kyma-gateway.kyma-system.svc.cluster.local
host: my-function
service:
name: my-function
port: 80
rules:
- path: /.*
methods: ["GET", "POST"]
accessStrategies:
- handler: noop # No authentication---
Eventing
Subscription
apiVersion: eventing.kyma-project.io/v1alpha2
kind: Subscription
metadata:
name: my-subscription
namespace: my-namespace
spec:
sink: http://my-function.my-namespace.svc.cluster.local
source: myapp
types:
- order.created.v1Publishing Events
// CloudEvent format
const event = {
specversion: "1.0",
type: "order.created.v1",
source: "myapp",
id: uuid(),
data: { orderId: "12345" }
};
await fetch(`${EVENTING_ENDPOINT}/publish`, {
method: "POST",
headers: { "Content-Type": "application/cloudevents+json" },
body: JSON.stringify(event)
});---
Security
API Gateway Authentication
JWT validation with XSUAA:
accessStrategies:
- handler: jwt
config:
jwks_urls:
- https://<subaccount>.authentication.<region>.hana.ondemand.com/token_keys
trusted_issuers:
- https://<subaccount>.authentication.<region>.hana.ondemand.com/oauth/tokenRBAC
# Role
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: developer
namespace: my-namespace
rules:
- apiGroups: ["", "apps"]
resources: ["pods", "deployments", "services"]
verbs: ["get", "list", "create", "update", "delete"]
---
# RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: developer-binding
namespace: my-namespace
subjects:
- kind: User
name: developer@example.com
roleRef:
kind: Role
name: developer
apiGroup: rbac.authorization.k8s.ioNetwork Policies
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny
namespace: my-namespace
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress---
kubectl Commands
Authentication
# Download kubeconfig from BTP Cockpit
# Or use kubelogin for OIDC
export KUBECONFIG=~/.kube/kyma-kubeconfig.yaml
kubectl get nodesCommon Operations
# List resources
kubectl get pods -n my-namespace
kubectl get deployments -n my-namespace
kubectl get services -n my-namespace
# Apply configuration
kubectl apply -f deployment.yaml
# View logs
kubectl logs -f deployment/my-app -n my-namespace
# Describe resource
kubectl describe pod my-pod -n my-namespace
# Execute command in pod
kubectl exec -it my-pod -n my-namespace -- /bin/sh
# Port forward
kubectl port-forward svc/my-app 8080:80 -n my-namespace
# Delete resources
kubectl delete -f deployment.yamlTroubleshooting
# Get events
kubectl get events -n my-namespace --sort-by='.lastTimestamp'
# Check pod status
kubectl get pods -n my-namespace -o wide
# View container logs
kubectl logs my-pod -c my-container -n my-namespace
# Previous container logs
kubectl logs my-pod -c my-container -n my-namespace --previous---
Related Documentation
- Kyma Environment: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/10-concepts/kyma-environment-468c2f3.md
- Kyma Modules: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/10-concepts/kyma-modules-0dda141.md
- Getting Started: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/20-getting-started/getting-started-in-the-kyma-environment-d1abd18.md
- Kyma Project: https://kyma-project.io/docs/
Operations and Monitoring Reference
Complete guidance for SAP BTP operations, monitoring, logging, and alerting.
Source: https://github.com/SAP-docs/sap-btp-cloud-platform/tree/main/docs/50-administration-and-ops
---
Table of Contents
1. Monitoring Overview 2. SAP Cloud ALM 3. Application Logging 4. Audit Logging 5. Alert Notification 6. Health Monitoring 7. Operating Model 8. Data Protection
---
Monitoring Overview
Monitoring Stack
Application Layer
↓ Logs & Metrics
SAP Cloud Logging / Application Logging
↓ Analysis
SAP Cloud ALM / External Tools
↓ Alerts
SAP Alert Notification
↓ Channels
Email / Slack / ServiceNow / Cloud ALMAvailable Services
| Service | Purpose |
|---|---|
| SAP Cloud ALM | End-to-end application lifecycle management |
| Application Logging | Application log collection and analysis |
| SAP Cloud Logging | Observability across CF, Kyma, K8s |
| Audit Log | Security-relevant activity records |
| Alert Notification | Multi-channel alerting |
---
SAP Cloud ALM
Enterprise application lifecycle management included with SAP Enterprise Support.
Capabilities
| Feature | Description |
|---|---|
| Real User Monitoring | End-user experience tracking |
| Health Monitoring | Application and service health |
| Integration Monitoring | Integration flow status |
| Exception Monitoring | Error detection and analysis |
| Job Automation Monitoring | Scheduled job tracking |
| Business Process Monitoring | Process KPIs |
Setup
1. Activate SAP Cloud ALM in BTP Cockpit 2. Configure data collection agents 3. Set up monitoring dashboards 4. Configure alert rules
Integration
SAP BTP Applications → SAP Cloud ALM
← Alert Notification---
Application Logging
Service Plans
| Plan | Features |
|---|---|
| lite | Basic logging, limited retention |
| standard | Extended retention, advanced features |
Setup
# Create service instance
cf create-service application-logs lite my-logs
# Bind to application
cf bind-service my-app my-logs
# Restage application
cf restage my-appLog Levels
| Level | Use Case |
|---|---|
| ERROR | Errors requiring attention |
| WARN | Warning conditions |
| INFO | General information |
| DEBUG | Debugging information |
Viewing Logs
CF CLI:
# Recent logs
cf logs my-app --recent
# Tail logs
cf logs my-app
# Specific time range
cf logs my-app --recent | grep "ERROR"Kibana Dashboard:
- Access via Application Logging service
- Create custom visualizations
- Set up log-based alerts
Log Retention
| Plan | Retention |
|---|---|
| lite | 7 days |
| standard | Configurable |
---
Audit Logging
Security-relevant chronological records for compliance and security.
Audit Categories
| Category | Description |
|---|---|
audit.data-access | Sensitive personal data access |
audit.data-modification | Sensitive data changes |
audit.security-events | Login, logout, security events |
audit.configuration | Security configuration changes |
Service Plans
| Plan | Features | Retention | Cost |
|---|---|---|---|
| default | BTP service audit data | 90 days | Included |
| premium | Custom app audit data | Configurable | Additional |
Audit Log Retrieval
Via Viewer: 1. Subscribe to SAP Audit Log Viewer Service 2. Assign viewer roles 3. Access via BTP Cockpit
Via API:
curl -X GET "https://auditlog.cf.<region>.hana.ondemand.com/v2/auditlogrecords" \
-H "Authorization: Bearer <token>" \
-H "Accept: application/json"Writing Audit Logs (Custom Apps)
// Node.js example
const auditLog = require('@sap/audit-logging');
const log = auditLog.v2(credentials);
await log.dataAccess({
object: { type: 'customer', id: '12345' },
attributes: ['email', 'phone'],
accessChannel: 'API'
}).tenant('tenant-id').by('user@example.com').log();---
Alert Notification
Multi-channel alerting service for BTP events.
Alert Channels
| Channel | Configuration |
|---|---|
| SMTP settings | |
| Slack | Webhook URL |
| Microsoft Teams | Webhook URL |
| ServiceNow | Instance URL + credentials |
| SAP Cloud ALM | Direct integration |
| Webhook | Custom HTTP endpoint |
Alert Configuration
{
"conditions": {
"type": "CONDITION_TREE",
"children": [
{
"type": "LEAF",
"parameter": "eventType",
"operator": "=",
"value": "audit.security-events"
}
]
},
"actions": [
{
"type": "EMAIL",
"properties": {
"destination": "alerts@example.com"
}
}
]
}Event Types
| Category | Events |
|---|---|
| Application | Start, stop, crash |
| Service | Binding changes, instance updates |
| Security | Authentication failures, role changes |
| Platform | Quota warnings, maintenance |
---
Health Monitoring
Application Health Checks
Cloud Foundry:
# manifest.yml
applications:
- name: my-app
health-check-type: http
health-check-http-endpoint: /health
health-check-timeout: 60Kyma:
# deployment.yaml
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 5Health Endpoints
// Express.js health endpoint
app.get('/health', (req, res) => {
res.json({
status: 'UP',
checks: {
database: checkDatabase(),
cache: checkCache()
}
});
});---
Operating Model
Shared Responsibility Model
| Area | SAP Responsibility | Customer Responsibility |
|---|---|---|
| Platform | Infrastructure, OS, patches | - |
| Runtime | CF/Kyma platform | Application code |
| Services | BTP service availability | Service configuration |
| Security | Platform security | Application security |
| Data | Encryption at rest | Data classification |
| Backup | Platform backups | Application backups |
Cloud Foundry vs Kyma Differences
| Aspect | Cloud Foundry | Kyma |
|---|---|---|
| Security Patches | SAP provisions patched versions | Customer creates new Docker images |
| Container Security | SAP hardened defaults | Customer configures per K8s recommendations |
| Custom Databases | SAP backup support | Customer manages backups |
| User Management | Subaccount level | Subaccount + Kyma RBAC |
Go-Live Checklist
1. Deploy to Production
- Production environment configured
- All services bound
- Environment variables set
2. Configure Access
- Business users provisioned
- Role collections assigned
- SSO configured
3. Set Up Monitoring
- Application logging enabled
- Health checks configured
- Alerts set up
4. Document
- Runbooks created
- Support contacts identified
- Escalation paths defined
---
Data Protection
GDPR Compliance
SAP BTP provides technical features for data protection:
| Feature | Purpose |
|---|---|
| Audit Logging | Track data access |
| Change Logging | Record modifications |
| Data Deletion | Support erasure requests |
| Consent Management | Manage user consent |
Personal Data Guidelines
Avoid Personal Data In:
- Account names
- Database names
- Tenant identifiers
- Technical field names
Proper Handling:
- Classify data sensitivity
- Implement access controls
- Enable audit logging
- Document processing activities
User Data Locations
| User Type | Storage Location |
|---|---|
| Global Account Users | Platform IdP or Cloud Identity Services |
| Platform Users | Multiple IdPs possible |
| Business Users | Cloud Identity Services or custom IdP |
Data Subject Requests
1. Access Requests: Use audit logs to identify data access 2. Deletion Requests: Use deletion APIs or manual processes 3. Portability: Export via APIs
---
Operational Commands
CF Application Operations
# Restart application
cf restart my-app
# Scale instances
cf scale my-app -i 3
# View app events
cf events my-app
# SSH for debugging
cf ssh my-app
# Check environment
cf env my-appKyma Operations
# Restart deployment
kubectl rollout restart deployment/my-app -n my-namespace
# Scale deployment
kubectl scale deployment my-app --replicas=3 -n my-namespace
# View events
kubectl get events -n my-namespace --sort-by='.lastTimestamp'
# Check pod status
kubectl describe pod <pod-name> -n my-namespace---
Related Documentation
- Operations: https://github.com/SAP-docs/sap-btp-cloud-platform/tree/main/docs/50-administration-and-ops
- Audit Logging: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/50-administration-and-ops/audit-logging-in-the-cloud-foundry-environment-f92c86a.md
- Operating Model: https://github.com/SAP-docs/sap-btp-cloud-platform/tree/main/docs/70-getting-support
- Data Protection: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/60-security/data-protection-and-privacy-7e513d3.md
Regions and API Endpoints Reference
Complete reference for SAP BTP regions across all environments.
Source: https://github.com/SAP-docs/sap-btp-cloud-platform/tree/main/docs/10-concepts
---
Table of Contents
1. Cloud Foundry Regions 2. Kyma Regions 3. ABAP Environment Regions 4. Trial Regions 5. EU Access Regions 6. BTP Cockpit URLs
---
Cloud Foundry Regions
Amazon Web Services (AWS)
| Region | Location | API Endpoint | Domain |
|---|---|---|---|
| eu10 | Frankfurt | api.cf.eu10.hana.ondemand.com | cfapps.eu10.hana.ondemand.com |
| eu10-002 | Frankfurt | api.cf.eu10-002.hana.ondemand.com | cfapps.eu10-002.hana.ondemand.com |
| eu10-003 | Frankfurt | api.cf.eu10-003.hana.ondemand.com | cfapps.eu10-003.hana.ondemand.com |
| eu10-004 | Frankfurt | api.cf.eu10-004.hana.ondemand.com | cfapps.eu10-004.hana.ondemand.com |
| eu11 | Frankfurt | api.cf.eu11.hana.ondemand.com | cfapps.eu11.hana.ondemand.com |
| eu13 | Milan | api.cf.eu13.hana.ondemand.com | cfapps.eu13.hana.ondemand.com |
| us10 | US East (Virginia) | api.cf.us10.hana.ondemand.com | cfapps.us10.hana.ondemand.com |
| us10-001 | US East (Virginia) | api.cf.us10-001.hana.ondemand.com | cfapps.us10-001.hana.ondemand.com |
| us11 | US West (Oregon) | api.cf.us11.hana.ondemand.com | cfapps.us11.hana.ondemand.com |
| br10 | Brazil (São Paulo) | api.cf.br10.hana.ondemand.com | cfapps.br10.hana.ondemand.com |
| jp10 | Japan (Tokyo) | api.cf.jp10.hana.ondemand.com | cfapps.jp10.hana.ondemand.com |
| ap10 | Australia (Sydney) | api.cf.ap10.hana.ondemand.com | cfapps.ap10.hana.ondemand.com |
| ap11 | Singapore | api.cf.ap11.hana.ondemand.com | cfapps.ap11.hana.ondemand.com |
| ap12 | South Korea (Seoul) | api.cf.ap12.hana.ondemand.com | cfapps.ap12.hana.ondemand.com |
| ca10 | Canada (Montreal) | api.cf.ca10.hana.ondemand.com | cfapps.ca10.hana.ondemand.com |
Microsoft Azure
| Region | Location | API Endpoint | Domain |
|---|---|---|---|
| eu20 | Netherlands | api.cf.eu20.hana.ondemand.com | cfapps.eu20.hana.ondemand.com |
| eu20-001 | Netherlands | api.cf.eu20-001.hana.ondemand.com | cfapps.eu20-001.hana.ondemand.com |
| us20 | US West | api.cf.us20.hana.ondemand.com | cfapps.us20.hana.ondemand.com |
| us21 | US East | api.cf.us21.hana.ondemand.com | cfapps.us21.hana.ondemand.com |
| jp20 | Japan (Tokyo) | api.cf.jp20.hana.ondemand.com | cfapps.jp20.hana.ondemand.com |
| ap20 | Australia (Sydney) | api.cf.ap20.hana.ondemand.com | cfapps.ap20.hana.ondemand.com |
| ap21 | Singapore | api.cf.ap21.hana.ondemand.com | cfapps.ap21.hana.ondemand.com |
| br20 | Brazil (São Paulo) | api.cf.br20.hana.ondemand.com | cfapps.br20.hana.ondemand.com |
| ca20 | Canada (Toronto) | api.cf.ca20.hana.ondemand.com | cfapps.ca20.hana.ondemand.com |
| ch20 | Switzerland (Zurich) | api.cf.ch20.hana.ondemand.com | cfapps.ch20.hana.ondemand.com |
Google Cloud Platform (GCP)
| Region | Location | API Endpoint | Domain |
|---|---|---|---|
| us30 | US Central (Iowa) | api.cf.us30.hana.ondemand.com | cfapps.us30.hana.ondemand.com |
| eu30 | Frankfurt | api.cf.eu30.hana.ondemand.com | cfapps.eu30.hana.ondemand.com |
| in30 | India (Mumbai) | api.cf.in30.hana.ondemand.com | cfapps.in30.hana.ondemand.com |
| il30 | Israel (Tel Aviv) | api.cf.il30.hana.ondemand.com | cfapps.il30.hana.ondemand.com |
| jp30 | Japan (Osaka) | api.cf.jp30.hana.ondemand.com | cfapps.jp30.hana.ondemand.com |
| jp31 | Japan (Tokyo) | api.cf.jp31.hana.ondemand.com | cfapps.jp31.hana.ondemand.com |
| sa30 | Saudi Arabia (Dammam) | api.cf.sa30.hana.ondemand.com | cfapps.sa30.hana.ondemand.com |
| sa31 | Saudi Arabia (Dammam) | api.cf.sa31.hana.ondemand.com | cfapps.sa31.hana.ondemand.com |
| ap30 | Australia (Sydney) | api.cf.ap30.hana.ondemand.com | cfapps.ap30.hana.ondemand.com |
| br30 | Brazil (São Paulo) | api.cf.br30.hana.ondemand.com | cfapps.br30.hana.ondemand.com |
Other Providers
| Region | Provider | Location | API Endpoint |
|---|---|---|---|
| cn40 | Alibaba Cloud | Shanghai | api.cf.cn40.platform.sapcloud.cn |
| cn20 | Azure China | China North | api.cf.cn20.platform.sapcloud.cn |
| eu01 | SAP Cloud Infra | Frankfurt | api.cf.eu01.hana.ondemand.com |
| ae01 | SAP Cloud Infra | Dubai | api.cf.ae01.hana.ondemand.com |
---
Kyma Regions
AWS Regions
| Region | Location |
|---|---|
| eu10 | Frankfurt |
| us10 | US East (Virginia) |
| jp10 | Japan (Tokyo) |
| ap10 | Australia (Sydney) |
| ap11 | Singapore |
| ap12 | South Korea (Seoul) |
| br10 | Brazil (São Paulo) |
| ca10 | Canada (Montreal) |
Azure Regions
| Region | Location |
|---|---|
| eu20 | Netherlands |
| us20 | US West |
| us21 | US East |
| jp20 | Japan (Tokyo) |
| ap20 | Australia (Sydney) |
| ap21 | Singapore |
GCP Regions
| Region | Location |
|---|---|
| us30 | US Central (Iowa) |
| eu30 | Frankfurt |
---
ABAP Environment Regions
| Region | Provider | Location |
|---|---|---|
| eu10 | AWS | Frankfurt |
| us10 | AWS | US East (Virginia) |
| jp10 | AWS | Japan (Tokyo) |
| ap10 | AWS | Australia (Sydney) |
| ap11 | AWS | Singapore |
| eu20 | Azure | Netherlands |
| us20 | Azure | US West |
| jp20 | Azure | Japan (Tokyo) |
---
Trial Regions
Cloud Foundry Trial
| Region | Provider | Location |
|---|---|---|
| us10 | AWS | US East (Virginia) |
| ap21 | Azure | Singapore |
Kyma Trial
| Region | Provider | Location |
|---|---|---|
| Free plan | AWS | Various |
Trial limitations:
- 90-day duration
- Limited resources
- Apps stop daily
- No SLA
---
EU Access Regions
For contracts requiring data processing within EEA/Switzerland only:
| Region | Provider | Supports EU Access |
|---|---|---|
| eu10 | AWS | Yes |
| eu11 | AWS | Yes |
| eu20 | Azure | Yes |
| eu30 | GCP | Yes |
| ch20 | Azure | Yes |
Note: Not all services support EU Access. Check SAP Discovery Center for service availability.
---
BTP Cockpit URLs
Global Cockpit
- Production: https://cockpit.btp.cloud.sap
- China: https://cockpit.cn40.platform.sapcloud.cn
Region-Specific Cockpits
| Pattern | Example |
|---|---|
| Cloud Foundry | https://cockpit.cf.<region>.hana.ondemand.com |
| Authentication | https://<subaccount>.authentication.<region>.hana.ondemand.com |
CLI Endpoints
| Tool | Endpoint Pattern |
|---|---|
| btp CLI | https://cpcli.cf.<region>.hana.ondemand.com |
| CF CLI | https://api.cf.<region>.hana.ondemand.com |
| UAA | https://uaa.cf.<region>.hana.ondemand.com |
---
Network Considerations
NAT IPs (Egress)
Each region has NAT IPs for outbound traffic. IPs may change with at least 4 weeks notice.
Load Balancer IPs (Ingress)
Each region has dedicated load balancer IPs for inbound traffic.
Firewall Rules
For on-premise connectivity:
- Allow outbound HTTPS (443) to Cloud Connector
- Allow outbound to region-specific endpoints
---
Region Selection Factors
| Factor | Consideration |
|---|---|
| Latency | Choose region closest to users |
| Data Residency | Legal requirements for data location |
| EU Access | EEA/Switzerland-only processing |
| Service Availability | Not all services in all regions |
| Provider Preference | AWS, Azure, GCP capabilities |
| Disaster Recovery | Multi-region strategy |
---
Related Documentation
- CF Regions: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/10-concepts/regions-and-api-endpoints-available-for-the-cloud-foundry-environment-f344a57.md
- Kyma Regions: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/10-concepts/regions-for-the-kyma-environment-557ec3a.md
- ABAP Regions: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/10-concepts/regions-and-api-endpoints-for-the-abap-environment-879f373.md
- SAP Discovery Center: https://discovery-center.cloud.sap/
Security Reference
Complete security guidance for SAP BTP including authentication, authorization, and identity management.
Source: https://github.com/SAP-docs/sap-btp-cloud-platform/tree/main/docs/60-security
---
Table of Contents
1. Security Overview 2. Identity Providers 3. Trust Configuration 4. Authorization 5. XSUAA Configuration 6. Role Collections 7. Principal Propagation 8. Audit Logging 9. Security Best Practices
---
Security Overview
User Types
| Type | Description | Authentication |
|---|---|---|
| Platform Users | Manage BTP infrastructure | Global account/subaccount trust |
| Business Users | Use deployed applications | Application-level trust |
Security Layers
Identity Provider (Source of Truth)
↓
SAP Cloud Identity Services (Proxy/Direct)
↓
SAP BTP (Shadow Users)
↓
Role Collections → Application AccessEncryption
- TLS 1.2 or higher mandatory
- TLS 1.0/1.1 not supported
- TLS 1.3 available via Custom Domain Manager
- HTTPS required for all communication
---
Identity Providers
SAP ID Service (Default)
- Default identity provider for SAP BTP
- Manages SAP Community users
- Suitable for testing and trial accounts
- Not recommended for production
SAP Cloud Identity Services
Recommended for production:
- Identity Authentication for authentication
- Identity Provisioning for user sync
- Corporate IdP integration via proxy
Identity Provider Architecture
Corporate IdP (SAML/OIDC)
↓
SAP Cloud Identity Services - Identity Authentication
↓
SAP BTP Platform (Trust Configuration)
↓
Applications (XSUAA)Identity Authentication Onboarding
1. Get Identity Authentication tenant 2. Add multiple administrators (different time zones) 3. Enable MFA for administrators 4. Configure security monitoring 5. Set up corporate IdP proxy (optional) 6. Establish trust with SAP BTP
---
Trust Configuration
Subaccount Trust Setup
For Platform Users:
Global Account → Trust Configuration → Add Identity ProviderFor Business Users:
Subaccount → Trust Configuration → New Trust ConfigurationOIDC Trust Configuration
{
"name": "my-corporate-idp",
"type": "oidc",
"origin": "my-idp-origin",
"config": {
"issuer": "https://idp.example.com",
"clientId": "my-client-id",
"clientSecret": "***",
"authorizationEndpoint": "https://idp.example.com/authorize",
"tokenEndpoint": "https://idp.example.com/token",
"userInfoEndpoint": "https://idp.example.com/userinfo"
}
}SAML Trust Configuration
Setup Steps: 1. Export SAML metadata XML from your IdP 2. In BTP Cockpit: Subaccount → Trust Configuration → New Trust Configuration 3. Upload IdP metadata (contains signing certificate, endpoints) 4. Configure attribute mapping (email, groups, custom attributes) 5. Download BTP SAML metadata for IdP registration 6. Test authentication flow
Metadata Exchange:
IdP Metadata → BTP BTP Metadata → IdP
- Entity ID - Entity ID
- SSO URL - Assertion Consumer URL
- Signing Certificate - Signing Certificate
- NameID format - Supported bindingsCertificate Handling:
- IdP certificates expire—monitor and update before expiry
- BTP auto-generates service provider certificate
- For certificate renewal: upload new IdP metadata with updated certificate
- Grace period allows both old and new certificates during transition
---
Authorization
Authorization Methods
| Method | Best For | Pros | Cons |
|---|---|---|---|
| Provisioning | Production, many users | Centralized, automated offboarding | Sync delay |
| Federation | Simple scenarios | Real-time, simple setup | Orphaned users |
| Manual | Testing only | Quick setup | Not scalable |
Provisioning (Recommended)
Identity Directory → Identity Provisioning → SAP BTPBenefits:
- Automated user lifecycle management
- Central role assignment
- Immediate offboarding
Federation
User attributes from IdP mapped to roles at runtime:
- No user sync required
- Real-time attribute updates
- Risk of orphaned shadow users
---
XSUAA Configuration
xs-security.json
Application security descriptor:
{
"xsappname": "my-app",
"tenant-mode": "dedicated",
"scopes": [
{
"name": "$XSAPPNAME.Read",
"description": "Read access"
},
{
"name": "$XSAPPNAME.Write",
"description": "Write access"
},
{
"name": "$XSAPPNAME.Admin",
"description": "Admin access"
}
],
"attributes": [
{
"name": "Country",
"description": "User country",
"valueType": "string"
}
],
"role-templates": [
{
"name": "Viewer",
"description": "Read-only user",
"scope-references": ["$XSAPPNAME.Read"]
},
{
"name": "Editor",
"description": "Read-write user",
"scope-references": ["$XSAPPNAME.Read", "$XSAPPNAME.Write"]
},
{
"name": "Administrator",
"description": "Full access",
"scope-references": ["$XSAPPNAME.Read", "$XSAPPNAME.Write", "$XSAPPNAME.Admin"]
}
],
"role-collections": [
{
"name": "MyApp_Viewer",
"description": "View my-app data",
"role-template-references": ["$XSAPPNAME.Viewer"]
}
]
}Service Instance Creation
# Cloud Foundry
cf create-service xsuaa application my-xsuaa -c xs-security.json
# Kyma (ServiceInstance)
kubectl apply -f - <<EOF
apiVersion: services.cloud.sap.com/v1
kind: ServiceInstance
metadata:
name: my-xsuaa
spec:
serviceOfferingName: xsuaa
servicePlanName: application
parameters:
xsappname: my-app
tenant-mode: dedicated
scopes:
- name: \$XSAPPNAME.Read
description: Read access
EOF---
Role Collections
Structure
Role Collection
├── Role 1 (from Role Template)
│ └── Scopes
├── Role 2
└── Users/Groups assignedCreating Role Collections
Via BTP Cockpit: 1. Navigate to Subaccount → Security → Role Collections 2. Create new role collection 3. Add roles from application role templates 4. Assign users or groups
Via btp CLI:
# Assign user to role collection
btp assign security/role-collection "MyApp_Viewer" \
--to-user user@example.com \
--of-idp my-idp-origin
# List role collections
btp list security/role-collectionGroup Mapping
Map IdP groups to role collections:
btp assign security/role-collection "MyApp_Viewer" \
--to-group "AppViewers" \
--of-idp my-idp-origin---
Principal Propagation
Forward user identity to backend systems:
On-Premise via Cloud Connector
User → SAP BTP App → Cloud Connector → On-Premise System
(SAML assertion) (X.509 certificate)Destination Configuration:
{
"Name": "my-onprem-system",
"Type": "HTTP",
"URL": "http://virtualhost:port",
"ProxyType": "OnPremise",
"Authentication": "PrincipalPropagation"
}Cloud-to-Cloud
User → SAP BTP App → SAP Cloud Service
(OAuth2SAMLBearerAssertion)Destination Configuration:
{
"Name": "my-cloud-service",
"Type": "HTTP",
"URL": "https://api.example.com",
"Authentication": "OAuth2SAMLBearerAssertion",
"audience": "https://audience.example.com",
"tokenServiceURL": "https://token.example.com/oauth/token"
}---
Audit Logging
Enabling Audit Log
1. Subscribe to SAP Audit Log Viewer Service 2. Configure audit log retention 3. Access via BTP Cockpit or API
Audit Categories
| Category | Description |
|---|---|
| Security Events | Login attempts, authorization changes |
| Data Access | Read operations on sensitive data |
| Data Modification | Create, update, delete operations |
| Configuration Changes | System configuration updates |
Audit Log Retrieval API
# Get audit logs
curl -X GET "https://auditlog.cf.<region>.hana.ondemand.com/v2/auditlogrecords" \
-H "Authorization: Bearer <token>"---
Security Best Practices
Identity Management
1. Use SAP Cloud Identity Services for production 2. Enable MFA for all administrators 3. Maintain backup administrators in default IdP 4. Use provisioning over federation for user lifecycle
Access Control
1. Principle of least privilege - minimal required access 2. Regular access reviews - remove unused permissions 3. Avoid generic admin accounts - individual accountability 4. Document role assignments - audit trail
Platform Access
| Environment | Dev Access | Prod Access |
|---|---|---|
| Development | Cloud Dev Team | No access |
| Production | No access | Platform Engineering |
Application Security
1. Validate all inputs - prevent injection attacks 2. Use XSUAA for authentication 3. Implement authorization checks - scope validation 4. Enable audit logging - track access 5. Encrypt sensitive data - at rest and in transit
Credential Management
1. Use destinations - never hardcode URLs/credentials 2. Rotate secrets regularly - service keys, passwords 3. Use service bindings - credentials via VCAP_SERVICES 4. Secure credential store - for application secrets
---
Troubleshooting
Common Issues
| Issue | Solution |
|---|---|
| 401 Unauthorized | Check token, verify trust configuration |
| 403 Forbidden | Check role assignments, scope requirements |
| Invalid redirect URI | Update callback URL in XSUAA config |
| Token expired | Implement token refresh logic |
Debug Token
# Decode JWT token
echo "<token>" | cut -d. -f2 | base64 -d | jq---
Related Documentation
- Security Overview: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/60-security/security-e129aa2.md
- XSUAA: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/60-security/sap-authorization-and-trust-management-service-6373bb7.md
- Troubleshooting: https://github.com/SAP-docs/sap-btp-cloud-platform/blob/main/docs/60-security/troubleshooting-for-sap-authorization-and-trust-management-service-c33d777.md