Work through the complete pre-launch checklist, run smoke tests, hand over to operations, and monitor the first 24 hours.
You have learned everything in this course — CAP foundations, data modeling, service development, HANA persistence, authentication, BTP service integrations, and deployment. This final episode brings it all together. A go-live checklist is not bureaucracy — it is the professional habit that prevents you from shipping something that breaks immediately and keeps your production environment stable after launch.
xs-security.json has "tenant-mode": "dedicated" (or "shared" for SaaS)NODE_ENV=production is set (CF sets this automatically — verify in cf env)auth.kind is xsuaa in the [production] profilePLACEHOLDER: comments in legal/contact pages have been filled inrobots.txt and sitemap.xml contain the correct production domainlocalStorage keys use production names (e.g. cgl-theme, not legacy ztd-theme)gitleaks detect returns clean)RequireRole (frontend) and @requires (CAP)/health endpoint returns only UP/DOWN — no internal data@sap/logging middleware enabled (Episode 66)/health endpoint returning 200 at the production URL/health (UptimeRobot, Pingdom, or BTP Alert Notification)cf app shows running state with 2+ instances--strategy blue-green (Episode 72)$top limitsmax sized to expected concurrencyUPDATE STATISTICS)Run these immediately after deploying to production:
# Health check
curl -s https://my-app.cfapps.eu10.hana.ondemand.com/health
# Expected: {"status":"UP","timestamp":"..."}
# XSUAA token acquisition (verify XSUAA is healthy)
curl -X POST "https://my-subaccount.authentication.eu10.hana.ondemand.com/oauth/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials&client_id=...&client_secret=..."
# Expected: {"access_token":"...","token_type":"Bearer"}
# OData metadata (verify CAP service is up and schema is correct)
curl -s -H "Authorization: Bearer <token>" \
https://my-app.cfapps.eu10.hana.ondemand.com/api/odata/v4/MyService/$metadata
# Expected: XML metadata document
# List endpoint (verify DB connection)
curl -s -H "Authorization: Bearer <token>" \
"https://my-app.cfapps.eu10.hana.ondemand.com/api/odata/v4/MyService/Entities?\$top=1"
# Expected: {"value":[...]}
Hand over to operations:
Runbook topics to document:
1. How to check app health (cf app, /health URL)
2. How to tail logs (cf logs, Kibana URL + common filters)
3. How to scale instances (cf scale -i N)
4. How to deploy a new version (mbt build && cf deploy --strategy blue-green)
5. How to roll back (deploy previous .mtar)
6. How to rotate XSUAA service key (cf create-service-key, update bindings)
7. How to check HANA health (BTP Cockpit → HANA Cloud → Monitor)
8. How to pause/unpause scheduled jobs (JSS cockpit)
9. Escalation path: who owns the BTP global account, who has SAP support access
| Time | Action |
|---|---|
| T+0 | Smoke tests pass ✓ |
| T+30m | Check Kibana — any unexpected ERROR log entries? |
| T+1h | cf app — memory stable, no restarts |
| T+2h | Check ANS — no alerts fired |
| T+4h | Review response times — any endpoints > 1 s? |
| T+24h | Check /health uptime monitor — 100% uptime? |
| T+24h | Review HANA Cloud memory and CPU in BTP Cockpit |
If something breaks in the first 24 hours, use the rollback procedure before trying to fix-forward — stability first, root-cause analysis second.
You have completed the SAP CAP: Zero to Deployed course.
Here is what you built knowledge of across all 80 episodes:
@requires/@restrict, mock auth, IAS, principal propagation, security patternsShip something real. The best way to consolidate this knowledge is to build an application that solves a problem you actually have. Start small — one entity, one service, one deployment. Then grow it.
Good luck.
You have completed the entire course. You can navigate a production BTP deployment with confidence, diagnose issues using structured logs and distributed traces, and hand over a stable, monitored, secure application to operations.
Sign in for progress tracking & Q&A →