Technical whitepaper · SAP ALM engineering

Building modular ALM and SRE tools around SAP with Python and open technologies.

This article is provided solely as a professional case study of the engineering approaches, architecture patterns, technologies, and lessons learned through this work. Only information appropriate for public disclosure is presented, including publicly available, open-source, generalized, or otherwise authorized material. No proprietary source code, credentials, confidential business information, internal system details, or other restricted information is included.

The notes below focus on the problems that led to each application, some of the implementation choices made along the way, and components that may be useful in other projects. SAP product names identify the systems and APIs involved; the application logic, workflows, analysis, visualization, and automation described here were developed around those integration points.

ALM WebFlow Studio interface showing browser automation workflows and the contextual ALM Engenie assistant
One implementation of the modular approach: WebFlow Studio combines browser recording, reusable workflow objects, execution controls, local runtime support, and contextual guidance in a single focused application.

FROM OPERATIONAL PROBLEMS TO RUNNING SOFTWARE

Applications that grew from day-to-day engineering challenges.

Most of these applications started fairly simply: a review that took too long, useful data spread across systems, a repetitive browser process, analysis that required a lot of manual interpretation, or an enterprise API that exposed information without necessarily providing the workflow a team needed around it. I’ve had the opportunity to work through those challenges over time, and several of the resulting utilities have grown into applications that now support day-to-day enterprise workflows.

Change governance & CAB readiness

The ChaRM and CAB tooling grew from the need to make change records, approval state, system context, risk signals, implementation dates, and review information easier to work with in one place. Much of the challenge was simply making information already available in enterprise systems more practical to scan, filter, export, and use during review.

Risk, BPCA & impact interpretation

BPCA Summary Writer, Relative Impact Map, NAVI-related analysis, and pre/post-import review tools came from recurring questions around change impact and regression evidence. They bring together dependency relationships, object-focused analysis, comparison logic, and reporting so that technical evidence can be easier for a reviewer to interpret while leaving the actual decision with the people responsible for it.

Cloud ALM operational views

Working with SAP Cloud ALM also created opportunities to build smaller views around its authenticated APIs. These applications keep Cloud ALM as the authoritative source while presenting project, feature, task, release, and status information in forms that are a little easier to use for particular operational workflows.

Diagnostics & guided analysis

Short-dump assistance and related diagnostic utilities started as ways to reduce some of the repetitive context gathering that happens before analysis can really begin. They organize technical evidence and surface useful signals, while keeping the engineer or reviewer responsible for interpreting the result.

Controlled Python application delivery

Python App Studio, PythonTestCockpit, and the related deployment tooling grew from experimenting with how small Python utilities could remain easy to create while still having a reasonable path through checking, review, packaging, and installation. The goal has been to add enough structure for enterprise use without taking away the lightweight nature that makes these utilities useful.

Web automation

WebFlow Studio grew from exploring a simpler way to build and maintain repeatable browser processes. It is now a functioning automation workbench with recording, reusable objects, variables and data, replay, execution, diagnostics, and a hybrid local runtime, while still keeping individual workflows understandable and editable.

Contextual assistance & guided workflows

Engenie and the guided-tour framework came from looking for better ways to provide help inside the applications themselves. The current implementation can use loaded operational data as authoritative context, walk users through application functions, and connect to richer AI assistance while keeping operational facts grounded in the underlying systems.

Deployment & enterprise integration

Several of these applications have progressed from small utilities into deployed tools supporting day-to-day workflows. Getting them there has provided useful experience with Cloud Foundry deployment, routing and authentication, destinations, connectivity services, APIs, persistence, role-aware behavior, local fallbacks where appropriate, and the environment-specific configuration that comes with enterprise operation.

Architecture

A lightweight application layer around enterprise systems.

The overall pattern is a Python/Flask control and analysis layer, a browser-facing UI, and governed adapters to SAP services. Each subtool can remain small and focused while sharing authentication, navigation, persistence, export, and deployment patterns.

Browser / AppRouterStatic UI, Flask pages, session entry point, XSUAA-backed authentication and route forwarding.
Python servicesFlask routes and domain modules keep parsing, scoring, analysis, export, and workflow logic separated.
Data adaptersSAP Cloud ALM APIs, OData, RFC or uploaded files depending on what the target system exposes.
Persistence & artifactsObject Store/S3-compatible persistence where needed; in-memory handling for transient review workflows.
DeploymentCloud Foundry applications packaged as MTAs, with service bindings and controlled transport across environments.
Why this shape works well: an individual utility can start with a file upload or local data source, then later switch to a governed API or destination without replacing the user-facing workflow.
Subapplications

Focused tools with reusable implementation patterns.

These are examples of the inner applications and the kinds of functions they contain. Several can run independently; the shared shell simply gives them a common navigation and deployment surface.

ChaRM CAB Dashboard

Loads change-governance data through OData or structured file fallbacks, normalizes fields, supports browser-side review and exports CSV/XLSX.

Reusable pieces: OData adapters, table normalization, editable review state, export pipelines.

SAP Cloud ALM Features Dashboard

Reads Cloud ALM feature and transport context, resolves project/release labels, and presents sortable operational views.

Reusable pieces: REST/OData client patterns, token handling, caching, resilient label resolution.

Shortdump Helper

Accepts ST22 HTML exports and turns them into structured findings with HTML, PDF, and JSON output.

Reusable pieces: BeautifulSoup parsing, rule/knowledge packs, ReportLab PDF generation.

BPCA Summary Writer

Processes BPCA intersection data, groups change impact, adds chronology/dependency context, and produces readable summaries.

Reusable pieces: pandas analysis, XLSX parsing, classification rules, visualization and report export.

Relative Impact Map

Builds transport-to-object relationship maps, identifies shared objects, and supports search/refocus across dependency hops.

Reusable pieces: graph-shaped data, deduplication, client-side filtering, interactive relationship exploration.

NAVICA

Analyzes object lists and optional catalogs to surface findings and create HTML/PDF/JSON reports.

Reusable pieces: parsers, scoring, mappings, lightweight persistence, structured exporters.

Import Queue Visualizer

Transforms CTS-style queue data into an ordered operational view and can simulate import progress for training/demo purposes.

Reusable pieces: legacy HTML/XLS parsing, sequence preservation, queue-state normalization, animated UI state.

Pre & Post Import Review

Reconciles pre-import change plans against post-import history and highlights warnings, errors, missing imports, and exceptions.

Reusable pieces: workbook correlation, reconciliation rules, evidence expansion, owner-facing Excel reporting.

PythonTestCockpit

Reviews Python application packages before governed publishing or deployment and returns structured code findings.

Reusable pieces: ZIP/repository inspection, policy gates, static Python analysis, HTML/JSON findings.

Python App Studio

A controlled single-file Python workspace with run/test, managed files, review workflow, restricted execution, notebook-style practice, and approved data services.

Reusable pieces: sandboxed execution, allow-listed imports, retention controls, publish/review lifecycle.

Python Deployment Cockpit

Guides approved Python packages through deployment checks and SAP BTP packaging expectations before creating a deployable artifact.

Reusable pieces: descriptor validation, readiness gates, packaging checks, repeatable deployment guidance.

ALM WebFlow Studio

Web-focused automation built around recording, object repositories, replay, data-driven execution, scheduling, audit, and an outbound-only local Chromium client.

Reusable pieces: Playwright, HMAC-signed client tasks, resilient selectors, audit trails, local/hosted runtime split.

Guided Tutorials & Engenie

A contextual help layer that can understand application manifests, launch guided procedures, and point users toward relevant tools or SAP references.

Reusable pieces: application manifests, guided-tour metadata, contextual state, provider-neutral assistant adapters.

Project & Release Timeline

Turns roadmap workbooks into interactive owner/status/lifecycle views with editable stages and standalone exports.

Reusable pieces: openpyxl/XlsxWriter workflows, client-side visualization, structured timeline modeling.

Local fallback runners

Where cloud-to-on-premise access is unavailable, a small governed local service can retrieve data and return only the required result.

Reusable pieces: bounded local agents, encrypted configuration, job leasing, controlled fallback behavior.

Open technologies

Libraries and what they are doing in practice.

TechnologyRole in the toolsTypical use
Python 3Primary application and analysis language.Parsing, APIs, rules, automation, reports, data transformation.
FlaskSmall web-service and server-rendered application layer.Routes, uploads, exports, health endpoints, internal APIs.
pandasTabular normalization and analysis.BPCA intersections, change datasets, reconciliation, filtering, aggregation.
openpyxl / XlsxWriterRead and generate Excel workbooks.Operational inputs, owner-facing reports, styled exports.
BeautifulSoupHTML parsing.ST22 exports and legacy HTML tables where an API is unavailable.
ReportLabPDF generation.Portable analysis reports and structured output.
matplotlibServer-side chart generation where static graphics are useful.Report visuals and analysis output.
requestsHTTP client layer.SAP Cloud ALM APIs, OData endpoints, service-to-service calls.
PyJWTJWT parsing/validation support.Identity and authorization integration patterns.
boto3S3-compatible object persistence.Durable application state and artifacts on supported object stores.
PlaywrightControlled Chromium recording and execution.Web automation, replay, screenshots, synthetic checks.
psutilScoped local process management.Cleaning up recorder/execution-owned Chromium processes safely.
JavaScript / HTML / CSSInteractive user interface layer.Tables, filters, layout persistence, drag/resize, guided tours, graph interactions.
Deployment pattern

SAP BTP without hiding the plumbing.

For Cloud Foundry deployment, the useful pattern is to keep runtime configuration in SAP BTP services rather than source code. A typical setup combines a Python backend, SAP Application Router, XSUAA, Destination service, Connectivity service when on-premise access is needed, and Object Store where persistence is required.

Application Router + XSUAA

Use the router as the browser entry point, authenticate the user, and forward the authenticated request to the backend. Role checks should also be enforced server-side.

Destination + Connectivity

Keep backend endpoints and connection metadata in governed destinations. For private-network SAP systems, pair an OnPremise destination with SAP Connectivity service and Cloud Connector.

MTA packaging

Describe modules, resources, bindings, and dependencies in mta.yaml, then build a repeatable MTAR instead of hand-configuring each deployment.

Cloud ALM APIs

Consume published APIs through a narrow adapter layer so application code works with logical objects rather than embedding tenant-specific details throughout the UI.

Object persistence

Use shared object storage for durable state and keep transient uploads in memory where there is no reason to retain them.

Hybrid automation

Keep browser execution on an approved local client when the target application is inside a private network. Pair the client outbound-only and exchange signed task envelopes rather than creating a generic tunnel.

Related material

Source examples and learning notes.

For smaller Python utilities and older experiments, the public workbench contains examples of SAP automation, RFC data access, reporting, and operational tooling. Think Like Python covers the progression from ABAP-oriented thinking into Python, Flask, SAP APIs and cloud deployment.

Questions about a pattern?

The site assistant can help point to the relevant project, library, or SAP integration topic.