ADR-005: OQ-11 closed — Integration Suite native (ADK adapter + iFlows + SBPA)

Both options framed for OQ-11 failed the deciding criterion: whether the
next person finds the thing inside the platform. A CAP service or a
hardened worker on Cloud Foundry is discoverable only to whoever already
knows the route to it, which is ADR-002's original objection relocated
rather than answered.

The integration is now Integration Suite native. Nothing on Cloud
Foundry, nothing in ABAP:

- Arena connectivity as a custom adapter built with the Adapter SDK —
  sender adapter with the webhook endpoint and delta scheduler, cluster
  lock for single-flight login, ADK persistency for the delta cursor,
  tenant user credentials for Arena secrets.
- Movement as iFlows to the released Product / BOM / ChangeMaster /
  Attachment OData APIs.
- Human approval in SAP Build Process Automation (entitled in the global
  account, not yet assigned).

Decisive: every mechanism hand-rolled in worker/ has a first-class ADK
facility, so the adapter deletes that custom infrastructure rather than
merely relocating it; and the ADK's Java/Maven/OSGi toolchain is not a
new cost here, because the AS/400 FetchAPI servlets are already Java and
Java developers can be staffed in-house.

worker/ is reclassified from deliverable to specification: its 137 tests
describe the Arena session, delta-cursor and webhook behaviour the
adapter must reproduce. app/ has no target service under ADR-005 and is
kept as reference, unrepointed.

ADR-004's "side-by-side runtime" is narrowed to mean "in Integration
Suite". New verification items V-5 (can an ADK adapter hold an Arena
session under cluster lock — the first build) and V-6 (where SBPA tasks
surface for a business user).

No SAP tenant or BTP artifact was modified.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-29 11:22:05 -07:00
co-authored by Claude Opus 5
parent ffd33f4ec0
commit 272a202152
3 changed files with 195 additions and 32 deletions
@@ -0,0 +1,81 @@
# ADR-005 — OQ-11 closed: Integration Suite native — Arena ADK adapter + iFlows, approval in SAP Build Process Automation
Date: 2026-09-29 · Status: Accepted (closes OQ-11; narrows ADR-004)
## Context
ADR-004 withdrew the on-stack RAP route and said the application moves to a
side-by-side runtime against released APIs, leaving the host open as OQ-11:
key-user extensibility in the tenant, or a CAP service on Cloud Foundry.
Both of those options failed the criterion that actually decides this. The test
is not build cost — it is whether the next person finds the thing inside the
platform. A CAP service or a hardened worker on Cloud Foundry is discoverable
only to whoever already knows the route to it, which is the same objection that
produced ADR-002 in the first place, merely relocated. Custom applications
living outside the platform are not acceptable here.
Two findings then settled which native option to take.
**The Adapter Development Kit already provides the infrastructure my worker
invented.** Every non-trivial mechanism in `worker/` has a first-class ADK
facility [source: SAP Help, *Adapter Development Process*, Cloud Integration,
verified 2026-09-29]:
| Hand-rolled in `worker/` | ADK facility |
|---|---|
| Promise lock so only one Arena login runs; correctness dependent on `instances: 1` | Managing Cluster Lock in Custom Adapters |
| Delta cursor persistence | Enabling ADK Persistency |
| Arena credentials in environment / a user-provided service | Accessing User Credentials |
| Delta poll timer | Enabling Scheduler Support for ADK Sender Adapter |
| `/api/health` with `ok`/`degraded` | Enabling Connection Status for Integration Flow |
| Structured logging | Enabling Tracing for Custom Adapter |
| Webhook ingress URL | Enabling Endpoint Visualization for Custom Adapter |
So the adapter does not merely present better — it deletes the custom
infrastructure the worker existed to supply.
**Java is not a new skill for this estate.** The ADK is a Java, Maven and OSGi
toolchain, which I had recorded as the cost of this route. It is not a cost
here: the AS/400 FetchAPI servlets on `mcl2000` are already Java, and Java
developers can be staffed from inside the company. One language and one team
therefore span both ends of the estate, and the ADK covers the on-premise leg
directly through *Accessing On-Premise Application using Cloud Connector* —
the sanctioned route to `mcl2000`, which retires the deleted Cloud Foundry
`fetchapi-bridge` pattern rather than rebuilding it.
## Decision
The integration is Integration Suite native. Nothing runs on Cloud Foundry and
nothing is written in ABAP.
- **Arena connectivity** is a custom adapter built with the Adapter SDK: a
sender adapter carrying the webhook endpoint and the delta scheduler, using
cluster lock for single-flight login, ADK persistency for the delta cursor,
and the tenant's user credentials for Arena secrets.
- **Movement** is iFlows: Arena → the released S/4 OData APIs for Product, BOM,
Change Master and Attachment.
- **Human approval** is SAP Build Process Automation, which is already entitled
in the global account (`process-automation`, `process-automation-service`), so
it requires assignment rather than procurement.
- **The S/4 target** remains released OData APIs through the customizing tenant
`my429480`.
`worker/` stops being a deliverable and becomes the **specification**: its 137
tests describe the Arena session, delta-cursor and webhook behaviour the adapter
must reproduce. That is worth more than its code, and it is why ADR-004 kept it.
## Consequences
- ADR-004's phrase "a side-by-side runtime" is narrowed: there is no custom
application runtime at all. Side-by-side now means "in Integration Suite",
not "on Cloud Foundry".
- The Fiori Elements app in `app/` has no target service under this decision.
Approval screens come from SAP Build Process Automation. I keep `app/` as
reference rather than deleting it, on the same reasoning as the parked RAP
objects, and I do not repoint it.
- New verification items: V-5 (can an ADK adapter hold an Arena session under
cluster lock) and V-6 (where SAP Build Process Automation tasks surface for a
business user).
- The estate gains a second use for the same skill: adapters for `softco-ap`
and the AS/400 legs can follow the same pattern.