Manages SAP BTP Service Manager for service instances, bindings, brokers across Cloud Foundry, Kyma, Kubernetes. Provision via SMCTL CLI, BTP CLI, REST APIs, OAuth2 auth, Kubernetes CRDs.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sap-btp-service-manager:sap-btp-service-managerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- **sap-btp-cloud-platform**: Use for platform fundamentals, service understanding, and BTP integration
README.mdreferences/api-reference.mdreferences/btp-cli-commands.mdreferences/kubernetes-operator.mdreferences/rate-limiting-filtering.mdreferences/roles-permissions.mdreferences/service-catalog-legacy.mdreferences/smctl-commands.mdtemplates/oauth-token-request.shtemplates/service-binding-cf.jsontemplates/service-binding-k8s.yamltemplates/service-instance-cf.jsontemplates/service-instance-k8s.yamlComprehensive skill for managing services across SAP BTP environments using SAP Service Manager.
Use this skill when working on tasks involving:
Service Instance Management:
Service Binding Management:
Platform & Broker Management:
Authentication & Authorization:
Kubernetes/Kyma Integration:
API & CLI Operations:
Troubleshooting:
⚠️ Important: The SMCLI repository was archived on September 30, 2025. While the tool remains functional, consider migration strategies for long-term SAP BTP workflows.
Recommended Method (Go):
# Install via Go (preferred approach)
go install github.com/Peripli/service-manager-cli@latest
# Add to PATH (if not already)
export PATH=$PATH:$(go env GOPATH)/bin
smctl --version
Alternative Method (Prebuilt Binary):
# Download from: [https://github.com/Peripli/service-manager-cli/releases/latest](https://github.com/Peripli/service-manager-cli/releases/latest)
tar -xzf smctl-*.tar.gz && chmod +x smctl
sudo mv smctl /usr/local/bin/ && smctl --version
Note: While the prebuilt binary method remains functional, the Go installation approach is officially recommended. Consider evaluating SAP's native BTP CLI as an alternative for new deployments.
# Interactive login
smctl login -a [https://service-manager.cfapps.<region>.hana.ondemand.com](https://service-manager.cfapps.<region>.hana.ondemand.com) \
--param subdomain=<subdomain>
# Client credentials
smctl login -a [https://service-manager.cfapps.<region>.hana.ondemand.com](https://service-manager.cfapps.<region>.hana.ondemand.com) \
--param subdomain=<subdomain> --auth-flow client-credentials \
--client-id <id> --client-secret <secret>
# Browse services
smctl marketplace
# Create instance (async)
smctl provision my-instance <service> <plan>
# Create binding
smctl bind my-instance my-binding
SAP Service Manager is the central registry for service brokers and platforms in SAP BTP.
Primary Resources:
| Plan | Purpose | Scopes |
|---|---|---|
| subaccount-admin | Full management | 10 scopes (manage + read) |
| subaccount-audit | Read-only monitoring | 6 scopes |
| container | Isolated management | 7 scopes |
Via Cockpit: Services > Instances > Create > Select service/plan > Cloud Foundry runtime
Via CF CLI:
# Create instance
cf create-service <service> <plan> <instance-name>
# Bind to app
cf bind-service <app-name> <instance-name>
# Create service key (external access)
cf create-service-key <instance-name> <key-name>
1. Install cert-manager:
kubectl apply -f [https://github.com/cert-manager/cert-manager/releases/download/v1.12.0/cert-manager.yaml](https://github.com/cert-manager/cert-manager/releases/download/v1.12.0/cert-manager.yaml)
2. Create Service Manager resources:
smctl provision sm-operator service-manager service-operator-access --mode sync
smctl bind sm-operator sm-operator-binding --mode sync
smctl get-binding sm-operator-binding -o json
3. Deploy operator:
helm repo add sap-btp-operator [https://sap.github.io/sap-btp-service-operator/](https://sap.github.io/sap-btp-service-operator/)
helm install sap-btp-operator sap-btp-operator/sap-btp-operator \
--namespace sap-btp-operator --create-namespace \
--set manager.secret.clientid=<id> \
--set manager.secret.clientsecret=<secret>
ServiceInstance:
apiVersion: services.cloud.sap.com/v1alpha1
kind: ServiceInstance
metadata:
name: my-service-instance
spec:
serviceOfferingName: <service-offering>
servicePlanName: <plan-name>
ServiceBinding:
apiVersion: services.cloud.sap.com/v1alpha1
kind: ServiceBinding
metadata:
name: my-binding
spec:
serviceInstanceName: my-service-instance
Reference: See references/kubernetes-operator.md for complete guide.
Alternative to SMCTL using the unified BTP CLI:
# Create instance
btp create services/instance \
--subaccount <subaccount-id> \
--service <service-name> \
--plan <plan-id> \
--parameters '{"key":"value"}' \
--labels '{"env":["dev"]}'
# Get instance details
btp get services/instance <instance-id> \
--subaccount <subaccount-id> \
--show-parameters
# Create binding
btp create services/binding \
--subaccount <subaccount-id> \
--binding <binding-name> \
--service-instance <instance-id>
# Platform management
btp list services/platform --subaccount <id>
btp register services/platform --subaccount <id> --name <name> --type <type>
btp unregister services/platform <platform-id> --subaccount <id>
curl '<uaa_url>/oauth/token' -X POST \
-H 'Accept: application/json' \
-d 'grant_type=client_credentials&client_id=<clientid>&client_secret=<clientsecret>'
Response:
{
"access_token": "<token>",
"token_type": "bearer",
"expires_in": 43199,
"scope": "<xsappname>.job.read <xsappname>.event.read"
}
[https://service-manager.cfapps.<region>.hana.ondemand.com/v1/](https://service-manager.cfapps..hana.ondemand.com/v1/`)
Three concurrent tiers enforced:
HTTP 429 returned with Retry-After header when limits exceeded.
Query parameters:
fieldQuery - Filter by resource attributeslabelQuery - Filter by resource labelseq, ne, in, contains, etc.Reference: See references/rate-limiting-filtering.md for complete rate limits and filtering details.
| Category | Commands | Description |
|---|---|---|
| Authentication | login, logout | Manage sessions |
| Instances | provision, deprovision, list-instances | Service instance lifecycle |
| Bindings | bind, unbind, list-bindings | Service binding management |
| Brokers | register-broker, update-broker | Service broker operations |
| Platforms | register-platform, list-platforms | Platform registration |
| Marketplace | marketplace | Browse service offerings |
--mode sync/async - Execution mode (default: async)-c, --parameters - JSON configuration-o, --output - Output format (json, yaml, text)-v, --verbose - Detailed outputReference: See references/smctl-commands.md for complete command reference with all flags and examples.
# Get operation URL from provision/bind response
smctl status /v1/service_instances/<id>/operations/<op-id>
API:
GET /v1/{resourceType}/{resourceID}/operations/{operationID}
Response states: in progress, succeeded, failed
Prerequisites:
# Force delete without confirmation
smctl deprovision my-instance -f
# Sync mode
smctl deprovision my-instance --mode sync
Note: Kyma/Kubernetes instances cannot be deleted from BTP cockpit.
Check:
Check:
Debug:
smctl get-instance <name> -o json
# Check "last_operation" for error details
Solution:
Retry-After headerCheck:
# SMCTL
smctl get-binding <name> -o json
# Kubernetes
kubectl get secrets <binding-name> -o yaml
Check:
smctl provision my-instance service plan --mode sync
smctl provision my-instance service plan \
-c '{}' \
--labels '{"environment":"production","team":"platform"}'
Instead of binding to apps, create service keys for external clients.
For async operations, poll status with exponential backoff.
subaccount-admin: Full managementsubaccount-audit: Read-only monitoringcontainer: Isolated per-instance accessReady-to-use templates in templates/ directory:
Detailed documentation in references/ directory:
[https://service-manager.cfapps.<region>.hana.ondemand.com/swaggerui/swagger-ui.html](https://service-manager.cfapps..hana.ondemand.com/swaggerui/swagger-ui.html`)When using this skill:
For Cloud Foundry: Use cf CLI or cockpit
For Kubernetes: Use ServiceInstance/ServiceBinding CRDs
For Other environments: Use SMCTL or BTP CLI
For API access: Retrieve OAuth2 token first
When troubleshooting:
License: GPL-3.0 Version: 1.1.1 Maintained by: E.J. Repository: https://github.com/secondsky/sap-skills
npx claudepluginhub secondsky/sap-skills --plugin sap-btp-service-managerProvides reference for SAP BTP Cloud Platform: account setup, Cloud Foundry/Kyma/ABAP environments, entitlements/quotas, XSUAA security, connectivity (destinations/Cloud Connector), MTA deployments, btp/CF CLI, and CI/CD.
Generates SAP BTP CLI commands, automates multi-step workflows, and troubleshoots errors for subaccount management, entitlements, service instances, role collections, Cloud Foundry, and Kyma.
Provides SAP BTP best practices for enterprise architecture, account hierarchies, security, authentication, CI/CD pipelines, governance, failover, and operations. Use for BTP planning and implementation.