398 lines
9.7 KiB
Markdown
398 lines
9.7 KiB
Markdown
# SAP BTP Job Scheduling Service - Setup Guide
|
|
|
|
**Source**: [https://github.com/SAP-docs/sap-btp-job-scheduling-service/tree/main/docs](https://github.com/SAP-docs/sap-btp-job-scheduling-service/tree/main/docs)
|
|
**Last Updated**: 2025-11-22
|
|
|
|
---
|
|
|
|
## Table of Contents
|
|
|
|
1. [Prerequisites](#prerequisites)
|
|
2. [Service Plans](#service-plans)
|
|
3. [Create Service Instance - BTP Cockpit](#create-service-instance---btp-cockpit)
|
|
4. [Create Service Instance - CF CLI](#create-service-instance---cf-cli)
|
|
5. [Create Service Instance - Kyma Dashboard](#create-service-instance---kyma-dashboard)
|
|
6. [XSUAA Configuration](#xsuaa-configuration)
|
|
7. [Complete Setup Workflow](#complete-setup-workflow)
|
|
|
|
---
|
|
|
|
## Prerequisites
|
|
|
|
### Account Requirements
|
|
|
|
| Requirement | Description |
|
|
|-------------|-------------|
|
|
| Global Account | SAP BTP global account |
|
|
| Subaccount | At least one subaccount with CF or Kyma enabled |
|
|
| Administrator Role | Global account administrator |
|
|
| Quota | Purchased quota for Job Scheduling and XSUAA services |
|
|
|
|
### Service Entitlements
|
|
|
|
| Service | Plan | Purpose |
|
|
|---------|------|---------|
|
|
| SAP Job Scheduling Service | standard | Job scheduling functionality |
|
|
| SAP Authorization and Trust Management (XSUAA) | application | OAuth 2.0 authentication |
|
|
|
|
### Cloud Foundry Requirements
|
|
|
|
- Created a Cloud Foundry space
|
|
- Assigned as Space Developer in your space
|
|
- Application deployed with exposed action endpoint
|
|
- Application and service in the same CF space (co-location required)
|
|
|
|
### Kyma Requirements
|
|
|
|
- Kyma environment enabled in subaccount
|
|
- Namespace created
|
|
- One of these roles:
|
|
- `SAP_Job_Scheduling_Service_Admin`
|
|
- `SAP_Job_Scheduling_Service_Viewer`
|
|
|
|
---
|
|
|
|
## Service Plans
|
|
|
|
### Standard Plan
|
|
|
|
The only available plan for SAP Job Scheduling Service.
|
|
|
|
| Feature | Value |
|
|
|---------|-------|
|
|
| Authentication | OAuth 2.0 |
|
|
| Service Name | `jobscheduler` |
|
|
| Plan Name | `standard` |
|
|
| Custom Parameters | None required (see below) |
|
|
|
|
**Note (November 2024 Update):** The `enable-xsuaa-support` property now **defaults to enabled**. No additional parameters are required during service instance creation. Previously, this had to be explicitly set.
|
|
|
|
---
|
|
|
|
## Create Service Instance - BTP Cockpit
|
|
|
|
### Prerequisites
|
|
|
|
- Logged on to SAP BTP cockpit
|
|
- Quota assigned to subaccount
|
|
|
|
### Step-by-Step Instructions
|
|
|
|
**Step 1: Access Service Marketplace**
|
|
|
|
1. Navigate to your subaccount
|
|
2. Go to **Services** → **Service Marketplace**
|
|
3. Locate **Job Scheduling Service**
|
|
|
|
**Step 2: Create Instance**
|
|
|
|
1. Click on Job Scheduling Service tile
|
|
2. Open **Actions** menu
|
|
3. Select **Create**
|
|
4. New Instance wizard launches
|
|
|
|
**Step 3: Configure Instance**
|
|
|
|
| Field | Value |
|
|
|-------|-------|
|
|
| Service Plan | standard (only option) |
|
|
| Instance Name | Your custom name (e.g., `my-jobscheduler`) |
|
|
| Parameters | None available |
|
|
|
|
**Step 4: Complete Creation**
|
|
|
|
1. Click **Next** through Parameters step (no customization available)
|
|
2. Review details
|
|
3. Click **Create**
|
|
|
|
**Step 5: Bind to Application**
|
|
|
|
1. Go to **Service Instances**
|
|
2. Select your new instance
|
|
3. Click **Bind Application**
|
|
4. Select your deployed Cloud Foundry application
|
|
|
|
---
|
|
|
|
## Create Service Instance - CF CLI
|
|
|
|
### Prerequisites
|
|
|
|
- CF CLI installed
|
|
- Logged into Cloud Foundry (`cf login`)
|
|
- Application deployed
|
|
|
|
### Commands
|
|
|
|
**1. Verify Service Availability:**
|
|
|
|
```bash
|
|
cf marketplace
|
|
```
|
|
|
|
Look for `jobscheduler` in the output.
|
|
|
|
**2. Create Service Instance:**
|
|
|
|
```bash
|
|
cf create-service jobscheduler standard my-jobscheduler
|
|
```
|
|
|
|
**3. Bind Service - Basic:**
|
|
|
|
```bash
|
|
cf bind-service my-app my-jobscheduler
|
|
```
|
|
|
|
**4. Bind Service - With X.509 Certificate:**
|
|
|
|
Create `parameters.json`:
|
|
```json
|
|
{
|
|
"credential-type": "x509",
|
|
"x509": {
|
|
"key-length": 2048,
|
|
"validity": 7,
|
|
"validity-type": "DAYS"
|
|
}
|
|
}
|
|
```
|
|
|
|
Bind with parameters:
|
|
```bash
|
|
cf bind-service my-app my-jobscheduler -c parameters.json
|
|
```
|
|
|
|
**5. Restage Application:**
|
|
|
|
```bash
|
|
cf restage my-app
|
|
```
|
|
|
|
**6. Verify Binding:**
|
|
|
|
```bash
|
|
cf env my-app
|
|
```
|
|
|
|
Check `VCAP_SERVICES` for `jobscheduler` credentials.
|
|
|
|
### VCAP_SERVICES Structure
|
|
|
|
**Standard Binding (clientsecret):**
|
|
|
|
```json
|
|
{
|
|
"jobscheduler": [{
|
|
"credentials": {
|
|
"url": "[https://jobscheduler-rest.cfapps.eu10.hana.ondemand.com",](https://jobscheduler-rest.cfapps.eu10.hana.ondemand.com",)
|
|
"uaa": {
|
|
"url": "[https://xxx.authentication.eu10.hana.ondemand.com",](https://xxx.authentication.eu10.hana.ondemand.com",)
|
|
"clientid": "sb-xxx",
|
|
"clientsecret": "xxx"
|
|
}
|
|
}
|
|
}]
|
|
}
|
|
```
|
|
|
|
**X.509 Binding:**
|
|
|
|
```json
|
|
{
|
|
"jobscheduler": [{
|
|
"credentials": {
|
|
"url": "[https://jobscheduler-rest.cfapps.eu10.hana.ondemand.com",](https://jobscheduler-rest.cfapps.eu10.hana.ondemand.com",)
|
|
"uaa": {
|
|
"certurl": "[https://xxx.authentication.cert.eu10.hana.ondemand.com",](https://xxx.authentication.cert.eu10.hana.ondemand.com",)
|
|
"clientid": "sb-xxx",
|
|
"certificate": "-----BEGIN CERTIFICATE-----\n...",
|
|
"key": "-----BEGIN RSA PRIVATE KEY-----\n..."
|
|
}
|
|
}
|
|
}]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Create Service Instance - Kyma Dashboard
|
|
|
|
### Prerequisites
|
|
|
|
- Logged on to SAP BTP cockpit
|
|
- Kyma environment enabled
|
|
|
|
### Step-by-Step Instructions
|
|
|
|
**Step 1: Access Kyma Dashboard**
|
|
|
|
1. Navigate to your subaccount
|
|
2. Click **Link to Dashboard** in Kyma Environment section
|
|
|
|
**Step 2: Select Namespace**
|
|
|
|
1. Choose your target namespace
|
|
|
|
**Step 3: Create Service Instance**
|
|
|
|
1. Go to **Service Instances** section
|
|
2. Click **Create**
|
|
3. Fill in details:
|
|
|
|
| Field | Value |
|
|
|-------|-------|
|
|
| Service Name | `jobscheduler` |
|
|
| Plan | `standard` |
|
|
| Instance Name | Your custom name |
|
|
|
|
**Step 4: Create Service Binding**
|
|
|
|
1. Navigate to **Service Bindings**
|
|
2. Click **Create**
|
|
3. Select your service instance
|
|
4. Provide binding name
|
|
|
|
**Step 5: Mount Service in Application**
|
|
|
|
Connect the service binding to your application deployment using SAP BTP Operator module.
|
|
|
|
### Kyma-Specific Notes
|
|
|
|
- Use SAP BTP Operator for service management
|
|
- Service bindings mounted as Kubernetes secrets
|
|
- Refer to Kyma documentation for detailed deployment patterns
|
|
|
|
---
|
|
|
|
## XSUAA Configuration
|
|
|
|
### Purpose
|
|
|
|
XSUAA provides OAuth 2.0 authentication for job action endpoints. Job Scheduling Service needs scope grants to call protected endpoints.
|
|
|
|
### xs-security.json Template
|
|
|
|
```json
|
|
{
|
|
"xsappname": "my-app",
|
|
"tenant-mode": "dedicated",
|
|
"scopes": [
|
|
{
|
|
"name": "$XSAPPNAME.JOBSCHEDULER",
|
|
"description": "Job Scheduler Scope",
|
|
"grant-as-authority-to-apps": [
|
|
"$XSSERVICENAME(my-jobscheduler)"
|
|
]
|
|
}
|
|
],
|
|
"authorities": [
|
|
"$XSAPPNAME.JOBSCHEDULER"
|
|
]
|
|
}
|
|
```
|
|
|
|
### Key Configuration Elements
|
|
|
|
| Element | Description |
|
|
|---------|-------------|
|
|
| `$XSAPPNAME` | Automatically replaced with app name |
|
|
| `$XSSERVICENAME(instance)` | References Job Scheduling instance |
|
|
| `grant-as-authority-to-apps` | Grants scope to Job Scheduling service |
|
|
|
|
### Apply Configuration
|
|
|
|
**Create XSUAA Instance:**
|
|
|
|
```bash
|
|
cf create-service xsuaa application my-xsuaa -c xs-security.json
|
|
```
|
|
|
|
**Update Existing Instance:**
|
|
|
|
```bash
|
|
cf update-service my-xsuaa -c xs-security.json
|
|
```
|
|
|
|
**Bind XSUAA to Application:**
|
|
|
|
```bash
|
|
cf bind-service my-app my-xsuaa
|
|
cf restage my-app
|
|
```
|
|
|
|
### Scope Grant Workflow
|
|
|
|
1. Application defines scope in `xs-security.json`
|
|
2. Scope granted to Job Scheduling service via `grant-as-authority-to-apps`
|
|
3. Job Scheduling obtains token from UAA with granted scope
|
|
4. Job Scheduling includes token when calling action endpoint
|
|
5. Application validates token using bound XSUAA instance
|
|
|
|
---
|
|
|
|
## Complete Setup Workflow
|
|
|
|
### Recommended Order
|
|
|
|
```
|
|
1. Deploy Application
|
|
└─ Expose action endpoint (HTTPS)
|
|
|
|
2. Create XSUAA Instance
|
|
└─ Configure xs-security.json with scope grants
|
|
└─ cf create-service xsuaa application my-xsuaa -c xs-security.json
|
|
|
|
3. Bind XSUAA to Application
|
|
└─ cf bind-service my-app my-xsuaa
|
|
|
|
4. Create Job Scheduling Instance
|
|
└─ cf create-service jobscheduler standard my-jobscheduler
|
|
|
|
5. Bind Job Scheduling to Application
|
|
└─ cf bind-service my-app my-jobscheduler
|
|
|
|
6. Restage Application
|
|
└─ cf restage my-app
|
|
|
|
7. Create Jobs via REST API or Dashboard
|
|
```
|
|
|
|
### Verification Checklist
|
|
|
|
- [ ] Application deployed and accessible
|
|
- [ ] Action endpoint exposed and working
|
|
- [ ] XSUAA instance created with correct scopes
|
|
- [ ] XSUAA bound to application
|
|
- [ ] Job Scheduling instance created
|
|
- [ ] Job Scheduling bound to application
|
|
- [ ] Application restaged
|
|
- [ ] VCAP_SERVICES contains both services
|
|
- [ ] Can obtain OAuth token successfully
|
|
- [ ] Can access Job Scheduling dashboard
|
|
|
|
### Common Setup Errors
|
|
|
|
| Error | Cause | Solution |
|
|
|-------|-------|----------|
|
|
| Service not found | Missing entitlement | Add quota to subaccount |
|
|
| 401 Unauthorized | Missing scope grant | Update xs-security.json |
|
|
| 403 Forbidden | Wrong space | Ensure co-location |
|
|
| Instance not visible | Not bound | Bind service to app |
|
|
|
|
---
|
|
|
|
## External References
|
|
|
|
### SAP Documentation
|
|
- **Initial Setup**: [https://help.sap.com/docs/job-scheduling/sap-job-scheduling-service/initial-setup](https://help.sap.com/docs/job-scheduling/sap-job-scheduling-service/initial-setup)
|
|
- **Getting Started**: [https://help.sap.com/docs/job-scheduling/sap-job-scheduling-service/getting-started](https://help.sap.com/docs/job-scheduling/sap-job-scheduling-service/getting-started)
|
|
- **XSUAA Documentation**: [https://help.sap.com/docs/btp/sap-business-technology-platform/security](https://help.sap.com/docs/btp/sap-business-technology-platform/security)
|
|
|
|
### Source Files
|
|
- `initial-setup-0adb655.md`
|
|
- `create-a-service-instance-in-sap-btp-cockpit-e267ab6.md`
|
|
- `create-a-service-instance-using-cf-cli-cb56f9e.md`
|
|
- `create-a-service-instance-in-the-kyma-dashboard-224a49a.md`
|
|
- `getting-started-02e4e8b.md`
|