Deployment Unit
Isolation Boundary
Cost Tracking
Account Model

BTP Subaccounts

The core deployment and isolation unit in SAP BTP. Each subaccount is a fully isolated environment with its own service instances, subscriptions, runtime environments, trust configuration, and cost tracking.

What is a BTP Subaccount?

Subaccounts are the primary deployment containers in SAP BTP. Each subaccount is a fully isolated unit with its own entitlements, service instances, application subscriptions, runtime environments, and identity trust configuration. Subaccounts are the fundamental unit of cost tracking, security isolation, and application deployment.

A subaccount belongs to exactly one Global Account (optionally within a Directory) and is always created in a specific cloud region (e.g., ae1 for UAE or eu10 for AWS Frankfurt). The region is immutable once the subaccount is created.

Runtime environments (Cloud Foundry, Kyma, ABAP) are enabled per subaccount and provide the compute fabric for application deployment. Each subaccount can have one CF Org, one Kyma cluster, and one ABAP system — never more.

Quick Facts

Parent
Global Account (or Directory)
Region
Fixed at creation (immutable)
CF Orgs
Max 1 per subaccount
Kyma Clusters
Max 1 per subaccount
ABAP Systems
Max 1 per subaccount
Trust Config
Subaccount-level (can differ from GA)
Cost Unit
Billing reported per subaccount
Subdomain
Unique per global account
Subaccount Architecture — Runtimes, Services, and Subscriptions
Rendering diagram…

Runtime Environments

Cloud Foundry
Recommended for CAP
  • One CF Org per subaccount
  • Multiple Spaces within the CF Org
  • Buildpack-based PaaS (Node.js, Java, Python)
  • SAP HANA HDI container bindings
  • Managed service instances via CF marketplace
  • Deploy via cf CLI, MTA, or CI/CD pipeline
  • Memory quota allocated at subaccount level
Kyma Runtime
Kubernetes / Containers
  • One Kyma cluster per subaccount
  • Managed Kubernetes with SAP extensions
  • Full container workload support
  • Serverless Functions (Node.js, Python)
  • ServiceInstance CRDs for BTP service consumption
  • Istio service mesh included
  • Best for microservice architectures
ABAP Cloud
Clean Core Dev
  • One ABAP system per subaccount
  • Full ABAP Cloud development (RAP, OData, CDS)
  • ADT (Eclipse) as development IDE
  • Released public APIs only — clean core compliant
  • Supports SAP Build Apps integration
  • Shared tenancy or dedicated options available
  • ABAP compute units-based pricing

Naming Convention & Labels

Consistent naming from day one
Subaccount names and labels cannot be changed easily once teams start deploying. Establish a naming convention before creating your first production subaccount.
subaccount-naming.sh
1# Subaccount naming convention: {company}-{domain}-{env}
2#
3# DEWA BTP Subaccount Names:
4# ─────────────────────────────────────────
5dewa-s4ext-dev     # S/4 Extensions — Development  (eu10)
6dewa-s4ext-tst     # S/4 Extensions — Test         (eu10)
7dewa-s4ext-prd     # S/4 Extensions — Production   (ae1 / UAE)
8
9dewa-integ-dev     # Integration Suite — Development
10dewa-integ-prd     # Integration Suite — Production
11
12dewa-ai-dev        # AI Services — Development      (eu10)
13dewa-ai-prd        # AI Services — Production       (ae1 / UAE)
14
15dewa-smart-dev     # Smart City Platform — Development
16dewa-smart-prd     # Smart City Platform — Production
17
18# Required labels on every subaccount:
19# environment: dev | tst | prd
20# cost_center: DEWA-BTP-01 (finance cost center code)
21# owner: platform-team@dewa.gov.ae
22# product: s4ext | integration | ai | smartcity

Enterprise Example — DEWA

DEWA — 12 Subaccounts across 4 Domains

Dubai Electricity and Water Authority (DEWA) maintains 12 subaccounts — 3 per major product line (S/4 Extensions, Integration, AI Services, Smart City). Each has fully isolated HANA Cloud, connectivity, and user trust configurations. Production subaccounts use region ae1 (AWS UAE) for UAE data residency compliance; development uses eu10 for cost efficiency.

SubaccountDomainRuntimeRegionKey Services
dewa-s4ext-devS/4 ExtensionsCF + Kymaeu10HANA Cloud, BAS
dewa-s4ext-prdS/4 ExtensionsCF + Kymaae1HANA Cloud, Connectivity
dewa-integ-devIntegrationCFeu10Integration Suite
dewa-integ-prdIntegrationCFae1Integration Suite
dewa-ai-devAI ServicesCF + Kymaeu10AI Core (free), HANA Cloud
dewa-ai-prdAI ServicesCF + Kymaae1AI Core, Gen AI Hub

Provisioning via btp CLI

create-subaccount.sh
1# Create a new subaccount
2btp create accounts/subaccount   --display-name "dewa-s4ext-prd"   --subdomain "dewa-s4ext-prd"   --region "ae1"   --description "S/4HANA Extensions - Production"   --used-for-production true
3
4# Add labels to a subaccount
5btp update accounts/subaccount <subaccount-id>   --labels '{"environment":["prd"],"cost_center":["DEWA-BTP-01"],"owner":["platform-team@dewa.gov.ae"]}'
6
7# Enable Cloud Foundry environment in a subaccount
8btp create accounts/environment-instance   --subaccount <subaccount-id>   --environment cloudfoundry   --service cloudfoundry   --plan standard   --parameters '{"instance_name":"dewa-s4ext-prd"}'
9
10# Configure trust to IAS in a subaccount
11btp create security/trust   --subaccount <subaccount-id>   --idp <ias-tenant>.accounts.ondemand.com

Best Practices

One subaccount per environment

Never mix DEV and PROD in the same subaccount. Isolation boundaries, entitlements, and trust configurations must be independent per environment.

Use CF Spaces for application isolation within subaccounts

Within a CF Org, create separate spaces for different apps or teams. CF space-level roles restrict developer access to specific application sets.

Apply mandatory labels on creation

Labels (environment, cost_center, owner, product) must be applied at subaccount creation — retrofitting them across 20+ subaccounts is painful.

Use subaccount-level IAS trust for SSO isolation

Each subaccount should point to IAS for trust. This allows environment-specific authentication policies (e.g., stricter MFA for production).

Size CF memory quotas based on real needs

Default CF memory quota is often too small for production CAP apps. Size based on profiling, not defaults — over-provisioning wastes CPEA credits.

Enable resource-based restrictions via CF space roles

Use Space Developer / Space Manager roles to limit which users can deploy to production spaces. Never give all developers SpaceDeveloper in production.

Common Pitfalls

Running DEV and PROD in the same subaccount
There is no workload isolation within a subaccount. A developer misconfiguration in a shared subaccount can affect production service instances directly.
Not setting entitlements before enabling CF environment
The Cloud Foundry environment requires the "cloudfoundry" service entitlement in the subaccount. Attempting to enable CF without the entitlement fails at runtime.
Using default SAP ID service trust in production
The default SAP ID Service has no MFA, no SCIM provisioning, and no corporate SSO. Production subaccounts must use IAS with an enterprise IdP federated.
Forgetting that region is immutable
Selecting the wrong region at subaccount creation means deleting and recreating the subaccount — along with all service instances and subscriptions inside it.

Security Considerations

Each production subaccount needs independent security configuration
Do not share service binding credentials, trust configurations, or admin role assignments between production and non-production subaccounts. Cross-subaccount credential sharing eliminates the isolation boundary that subaccounts are designed to enforce.
Each subaccount must have its own trust configuration pointing to IAS — never use default SAP ID Service in production.
Never reuse service binding credentials (client_id/client_secret) across subaccounts — rotate independently per environment.
Use CF space-level roles for developer access isolation — Space Developer in dev should not automatically grant access to production.
Enable SAP BTP Audit Log service per subaccount to capture all administrative actions, service creations, and binding changes.
Restrict subaccount administrator role to platform team members only — developers should have space-level access at most.

References