Understand global account → subaccount → CF org → space hierarchy. Assign entitlements and create production spaces.
Before you can create an XSUAA instance or an HDI container in a new subaccount you need the right entitlements. Getting entitlement errors at deploy time is a common pain point that blocks teams for hours. Understanding the BTP account hierarchy lets you plan the right structure for dev, test, and production environments and provision services correctly the first time.
Global Account (your company licence)
│
├─ Subaccount: DEV (CF org: my-company-dev)
│ └─ Space: dev
│
├─ Subaccount: TEST (CF org: my-company-test)
│ └─ Space: test
│
└─ Subaccount: PROD (CF org: my-company-prod)
└─ Space: prod
Global Account: holds the licence and entitlements for the whole company.
Subaccount: has its own CF org, users, and service quota. The unit you bill against.
CF Org: one CF org per subaccount. Contains CF spaces.
CF Space: the deployment target. Applications and service instances live in a space.
Entitlements allow a subaccount to use a specific service plan. Without an entitlement, cf create-service fails with a "service plan not found" error.
Steps in the BTP Cockpit:
1. Navigate to Global Account → Entitlements → Entity Assignments
2. Select your subaccount
3. Click Configure Entitlements → Add Service Plans
4. Search for the service (e.g., hana), select the plan (hdi-shared), set quota
5. Click Save
Required entitlements for a typical CAP app:
| Service | Plan | Notes |
|---|---|---|
hana |
hdi-shared |
HANA HDI container |
xsuaa |
application |
Authentication |
destination |
lite |
Destinations |
html5-apps-repo |
app-host, app-runtime |
Frontend storage |
jobscheduler |
standard |
Scheduled jobs |
application-logs |
standard |
Logging |
feature-flags |
standard |
Feature flags |
objectstore |
s3-standard |
File storage |
# Using BTP CLI (btp)
btp login --url https://cli.btp.cloud.sap --subdomain my-company
# Create subaccount
btp create accounts/subaccount \
--display-name "My CAP Prod" \
--region eu10 \
--subdomain my-cap-prod
# Enable CF
btp create accounts/environment-instance \
--environment cloudfoundry \
--subaccount <subaccount-id> \
--service cloudfoundry \
--plan standard \
--parameters '{"instance_name":"my-cap-prod"}'
cf login -a https://api.cf.eu10.hana.ondemand.com -o my-company-prod
# Create space
cf create-space production
# Assign a space quota (if your org has quotas defined)
cf set-space-quota production high-memory
# Add developers to the space
cf set-space-role user@example.com my-company-prod production SpaceDeveloper
cf api https://api.cf.eu10.hana.ondemand.com
cf login
cf target -o my-company-prod -s production
In CI/CD, use a service account (technical user):
cf auth <technical-user-email> <password>
cf target -o my-company-prod -s production
Error: The service plan 'hdi-shared' for service 'hana' was not found
Checklist:
1. Is the entitlement assigned? (Global Account → Entitlements → check the subaccount)
2. Is there remaining quota? (0 quota = same error as no entitlement)
3. Is the service available in your region? (Check SAP Discovery Center for regional availability)
4. Is the CF space targeted correctly?
| Mistake | Fix |
|---|---|
| Deploying to the wrong CF space | Always run cf target before cf deploy to confirm org/space |
Forgetting app-host vs app-runtime entitlements |
HTML5 Repo needs both plans entitled |
| Using Trial subaccount for production | Trial accounts expire and lack SLAs |
| Not setting a space quota | Unlimited quota can cause unexpected bill spikes |
| Shared XSUAA across dev and prod | Create separate XSUAA instances per environment |
You understand the BTP account hierarchy (global account → subaccount → CF org → space), can assign entitlements in the cockpit, create a subaccount and CF space with the BTP and CF CLIs, and diagnose service plan not found errors.
Sign in for progress tracking & Q&A →