agentsclimarketplace

Sap cloud alm

Skill efeumutaslan/SAP-SKILLS/skills/sap-cloud-alm

23 SAP development skills for Claude Code — ABAP, RAP, CAP, Fiori, BTP, HANA, S/4HANA, Integration Suite and more. Agent Skills Specification compatible.

Install
npx -y skills add efeumutaslan/SAP-SKILLS --skill sap-cloud-alm

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

SAP Cloud ALM (Application Lifecycle Management) skill. Use when configuring health monitoring, real user monitoring (RUM), integration/job monitoring, or managing SAP implementations (change/test/deployment management). If the user mentions Cloud ALM, SAP monitoring, RUM, health check, or ALM operations, use this skill.

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

10.3 KB, as published. Nobody here has run it

SAP Cloud ALM — Application Lifecycle Management

Related Skills

  • sap-testing-quality — Test execution integrates with Cloud ALM Test Management
  • sap-devops-cicd — CI/CD pipelines integrate with Cloud ALM Deployment Management
  • sap-signavio — Process models from Signavio link to Cloud ALM implementation

Quick Start

Two main modes:

ModePurposeKey Features
Cloud ALM for ImplementationProject deliveryTasks, Requirements, Test Management, Deployment
Cloud ALM for OperationsRun & monitorHealth Monitoring, Integration Monitoring, RUM, BPM

Access: SAP Cloud ALM is provisioned via SAP for Me → Cloud ALM tenant (included with SAP Enterprise Support)

First API call — List Projects:

curl -X GET "https://{{CALM_HOST}}/api/calm-projects/v1/projects" \
  -H "Authorization: Bearer {{TOKEN}}" \
  -H "Accept: application/json"

Core Concepts

Implementation Capabilities

CapabilityPurposeIntegration
Project & Task ManagementPlan sprints, assign workJira sync (optional)
Requirements ManagementCapture & trace requirementsLink to test cases
Process ManagementDefine scope, map processesSignavio import
Test ManagementManual & automated test executionATC, Tricentis
Deployment ManagementTrack transports & deploymentsCTS+, gCTS, BTP deploy
Change ManagementChange requests & approvalsChaRM-like workflow

Operations Capabilities

CapabilityMonitored SystemsKey Metrics
Health MonitoringS/4HANA, BTP, SuccessFactorsSystem availability, DB, memory
Integration MonitoringIntegration Suite, PI/POMessage throughput, errors
Real User Monitoring (RUM)Fiori apps, Web appsPage load time, JS errors
Job MonitoringBackground jobs, BTP jobsSuccess/failure, duration
Business Process MonitoringEnd-to-end processesSLA compliance, throughput
Configuration MonitoringSystem configurationDrift detection, compliance

Managed System Registration

SAP Cloud ALM ◄──── Service Key ────► Managed System
    │                                    │
    │  HTTPS (pull metrics)              │ Push events
    │  ← Health data                     │
    │  ← Alert notifications             │
    └────────────────────────────────────┘

Registration steps:

  1. BTP cockpit → Service Marketplace → sap-cloud-alm service
  2. Create service key with managed system credentials
  3. Cloud ALM → Landscape Management → Add managed system
  4. Enter service key details → Test connection → Activate

Common Patterns

Pattern 1: Health Monitoring Setup

Configure custom health metric:

// Custom metric definition
{
  "metricId": "custom_order_backlog",
  "name": "Order Processing Backlog",
  "description": "Number of unprocessed sales orders",
  "category": "Business",
  "unit": "count",
  "thresholds": {
    "warning": 100,
    "critical": 500
  },
  "collection": {
    "type": "odata",
    "url": "/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder/$count?$filter=OverallSDProcessStatus eq 'A'",
    "interval": 300
  }
}

Pattern 2: Business Process Monitoring — O2C

{
  "processId": "O2C_Standard",
  "name": "Order-to-Cash Standard",
  "steps": [
    {
      "stepId": "SO_CREATE",
      "name": "Sales Order Created",
      "source": "S/4HANA",
      "event": "SalesOrder.Created",
      "sla": {"maxDuration": "PT4H"}
    },
    {
      "stepId": "DELIVERY",
      "name": "Delivery Created",
      "source": "S/4HANA",
      "event": "OutboundDelivery.Created",
      "sla": {"maxDuration": "PT24H", "from": "SO_CREATE"}
    },
    {
      "stepId": "BILLING",
      "name": "Billing Document Created",
      "source": "S/4HANA",
      "event": "BillingDocument.Created",
      "sla": {"maxDuration": "PT48H", "from": "DELIVERY"}
    },
    {
      "stepId": "PAYMENT",
      "name": "Payment Received",
      "source": "S/4HANA",
      "event": "CustomerPayment.Cleared",
      "sla": {"maxDuration": "P30D", "from": "BILLING"}
    }
  ],
  "alerts": {
    "slaBreachChannel": "email",
    "recipients": ["[email protected]"]
  }
}

Pattern 3: Cloud ALM API — Create Task

import requests

def create_task(calm_host, token, project_id, task_data):
    """Create implementation task in Cloud ALM."""
    resp = requests.post(
        f"https://{calm_host}/api/calm-tasks/v1/tasks",
        headers={
            "Authorization": f"Bearer {token}",
            "Content-Type": "application/json"
        },
        json={
            "projectId": project_id,
            "title": task_data["title"],
            "description": task_data["description"],
            "type": task_data.get("type", "IMPLEMENTATION"),
            "status": "OPEN",
            "priority": task_data.get("priority", "MEDIUM"),
            "assignee": task_data.get("assignee"),
            "dueDate": task_data.get("due_date"),
            "tags": task_data.get("tags", [])
        }
    )
    resp.raise_for_status()
    return resp.json()

Pattern 4: Test Management Integration

def create_test_case(calm_host, token, project_id, test_data):
    """Create manual test case linked to requirement."""
    resp = requests.post(
        f"https://{calm_host}/api/calm-testmanagement/v1/testcases",
        headers={
            "Authorization": f"Bearer {token}",
            "Content-Type": "application/json"
        },
        json={
            "projectId": project_id,
            "title": test_data["title"],
            "requirementId": test_data.get("requirement_id"),
            "steps": [
                {
                    "stepNumber": i + 1,
                    "action": step["action"],
                    "expectedResult": step["expected"]
                }
                for i, step in enumerate(test_data["steps"])
            ],
            "priority": "HIGH",
            "automationStatus": "MANUAL"
        }
    )
    resp.raise_for_status()
    return resp.json()

def report_test_result(calm_host, token, test_case_id, result):
    """Report test execution result."""
    resp = requests.post(
        f"https://{calm_host}/api/calm-testmanagement/v1/testcases/{test_case_id}/executions",
        headers={
            "Authorization": f"Bearer {token}",
            "Content-Type": "application/json"
        },
        json={
            "status": result["status"],  # PASSED, FAILED, BLOCKED
            "executedBy": result["tester"],
            "executedOn": result["date"],
            "comment": result.get("comment", "")
        }
    )
    resp.raise_for_status()
    return resp.json()

Pattern 5: Alert Notification Configuration

{
  "alertRule": {
    "name": "Critical System Health",
    "scope": {
      "systems": ["S4H-PRD", "BTP-PRD"],
      "metrics": ["availability", "response_time", "error_rate"]
    },
    "conditions": {
      "severity": ["CRITICAL"],
      "duration": "PT5M"
    },
    "actions": [
      {
        "type": "EMAIL",
        "recipients": ["[email protected]"],
        "template": "system_critical_alert"
      },
      {
        "type": "WEBHOOK",
        "url": "https://hooks.slack.com/services/{{WEBHOOK_ID}}",
        "payload": {
          "text": "🚨 {{alertName}}: {{systemName}} - {{metricName}} is {{severity}}"
        }
      }
    ]
  }
}

Error Catalog

ErrorMessageRoot CauseFix
401UnauthorizedToken expired or wrong tenantRefresh OAuth token; check CALM URL
403Insufficient scopeMissing Cloud ALM roleAssign role in SAP Cloud Identity Services
404Project not foundWrong project ID or no accessVerify project ID; check project membership
Connection failedManaged system unreachableNetwork/firewall issueCheck connectivity; verify service key
No health dataMetrics not collectedSystem not registered or agent missingRe-register managed system; check agent status
RUM: No dataNo user sessions capturedRUM script not injectedAdd RUM JavaScript snippet to Fiori launchpad
Alert stormToo many alertsThresholds too sensitiveAdjust thresholds; add suppression rules
Sync errorJira/external sync failedAPI key expired or endpoint changedUpdate integration credentials

Performance Tips

  1. Selective monitoring — Don't monitor everything; focus on business-critical systems and processes
  2. Threshold tuning — Start with vendor defaults, adjust after 2-4 weeks of baseline data
  3. Alert grouping — Group related alerts to prevent alert fatigue; use correlation rules
  4. RUM sampling — For high-traffic apps, sample RUM data (10-25%) instead of collecting all sessions
  5. API pagination — Cloud ALM APIs return max 100 items; always implement cursor-based pagination
  6. Dashboard design — Create role-specific dashboards (Basis, Developers, Business) not one-size-fits-all
  7. Data retention — Configure metric retention periods; 90 days for detailed, 1 year for aggregated

Gotchas

  • Licensing: Cloud ALM is free with SAP Enterprise Support, but some advanced features need additional license
  • Tenant isolation: Cloud ALM has its own BTP subaccount; don't mix with application subaccounts
  • Time zones: All Cloud ALM timestamps are UTC; dashboard display uses browser timezone
  • Managed system limit: Check your entitlement for max number of managed systems
  • RUM privacy: Real User Monitoring collects user session data — ensure GDPR/privacy compliance
  • API versioning: Cloud ALM APIs are versioned (/v1/); always specify version in requests

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.