<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Btp on Marian Zeis Blog</title>
    <link>https://blog.zeis.de/tags/btp/</link>
    <description>Recent content in Btp on Marian Zeis Blog</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 03 Aug 2026 07:00:00 +0200</lastBuildDate>
    <atom:link href="https://blog.zeis.de/tags/btp/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>ARC-1 1.0: One Deployment, Multiple SAP Systems</title>
      <link>https://blog.zeis.de/posts/2026-08-03-arc-1-update/</link>
      <pubDate>Mon, 03 Aug 2026 07:00:00 +0200</pubDate>
      <guid>https://blog.zeis.de/posts/2026-08-03-arc-1-update/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1/releases/tag/v1.0.0&#34;&gt;ARC-1 1.0 is here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;When I published the &lt;a href=&#34;https://blog.zeis.de/posts/2026-04-27-arc-1/&#34;&gt;first ARC-1 post&lt;/a&gt;, I explained why I built an MCP server for ABAP development and why security has to be part of it from the beginning. This post is not another deep dive into every tool. The &lt;a href=&#34;https://docs.arc-1-mcp.com/release-notes/&#34;&gt;release notes&lt;/a&gt; already do that.&lt;/p&gt;&#xA;&lt;p&gt;For version 1.0 I want to focus on what really changed: ARC-1 became more stable, it can serve multiple SAP systems from one BTP deployment, the BTP and security setup is much better documented, and the project is no longer only one repository.&lt;/p&gt;&#xA;&lt;p&gt;Most of this happened because people used ARC-1, asked difficult questions, reported problems, opened issues and pull requests, sent me private messages, and invited me to Teams meetings about their plans and experiences. That is the most important part of this release.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-version-10-means&#34;&gt;What version 1.0 means&lt;/h2&gt;&#xA;&lt;p&gt;Version 1.0 does not mean ARC-1 is finished. It means there is now a stable base.&lt;/p&gt;&#xA;&lt;p&gt;ARC-1 now has a clearer scope. It is a controlled connection between AI assistants and ABAP systems. It can run locally for one developer or centrally on SAP BTP for a team. It supports classic on-premise ABAP, S/4HANA, BTP ABAP Environment, and S/4HANA Cloud Public Edition.&lt;/p&gt;&#xA;&lt;p&gt;It stays read-only by default. Changing code, reading business data, running SQL, changing transports, or using Git has to be enabled separately. This makes it possible to start small and only allow more when a team is ready.&lt;/p&gt;&#xA;&lt;p&gt;The new multi-system mode is still marked as experimental because parts of the setup and behavior may change. But it can already be used and is running in productive BTP environments, not only in my own setup.&lt;/p&gt;&#xA;&lt;p&gt;That is what 1.0 means to me: not that every possible ADT feature exists, but that the foundation, operating model, and safety boundaries are clear enough to build on.&lt;/p&gt;&#xA;&lt;h2 id=&#34;this-release-was-built-through-feedback&#34;&gt;This release was built through feedback&lt;/h2&gt;&#xA;&lt;p&gt;The first versions were mostly based on my own systems and workflows. That changed quickly. SAP systems, releases, login setups, networks, and transport processes are too different to understand from one landscape.&lt;/p&gt;&#xA;&lt;p&gt;Public issues and pull requests brought real system shapes into the project. A few examples:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/97&#34;&gt;Wouter Lemaire added the first BTP Cloud Foundry deployment&lt;/a&gt;, followed it with &lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/107&#34;&gt;deployment and write fixes&lt;/a&gt;, and continued to give very practical guidance on BTP, destinations, and how a shared ARC-1 service should be operated.&lt;/li&gt;&#xA;&lt;li&gt;Sami Bouguerra contributed &lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/170&#34;&gt;NetWeaver 7.50 probe fixtures and cookie handling&lt;/a&gt;, then fixed cases where activation looked successful although SAP had not activated the object in &lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/179&#34;&gt;PR #179&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Clément Ringot made BTP login more reliable across deployments in &lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/212&#34;&gt;PR #212&lt;/a&gt; and &lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/267&#34;&gt;PR #267&lt;/a&gt;, and fixed Cloud Connector response handling in &lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/440&#34;&gt;PR #440&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/524&#34;&gt;Geert-Jan Klaps added S/4HANA Public Cloud support&lt;/a&gt;. I do not have access to such a system myself, so his contribution made it possible to add and verify this landscape in ARC-1.&lt;/li&gt;&#xA;&lt;li&gt;Community pull requests added table queries, newer package creation, safer transport handling, better BTP login, configurable server names, and cookie rotation. You can find them in the repository&amp;rsquo;s &lt;a href=&#34;https://github.com/arc-mcp/arc-1/pulls?q=is%3Apr+is%3Amerged&#34;&gt;pull requests&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Not every useful contribution was code. Issues such as &lt;a href=&#34;https://github.com/arc-mcp/arc-1/issues/531&#34;&gt;multi-system connections&lt;/a&gt; and &lt;a href=&#34;https://github.com/arc-mcp/arc-1/issues/377&#34;&gt;how to structure several systems on BTP&lt;/a&gt; changed the architecture and documentation. Reports from older systems improved release detection and fallbacks. Questions from Basis and security people forced me to make assumptions explicit instead of hiding them in configuration examples.&lt;/p&gt;&#xA;&lt;p&gt;I also received many private messages and joined Teams meetings about ARC-1. Some people explained how their teams want to deploy it on BTP and walked me through their real landscape and requirements. Others pointed out security issues, unclear documentation, or places where the safety boundaries were not strong enough. These conversations directly improved login, error handling, audit information, package restrictions, user identity, and the deployment guides.&lt;/p&gt;&#xA;&lt;p&gt;Thank you especially to everyone who reported a security concern privately. That is exactly how an open-source security process should work. ARC-1 now has a public &lt;a href=&#34;https://github.com/arc-mcp/arc-1/blob/main/SECURITY.md&#34;&gt;security policy&lt;/a&gt;, private vulnerability reporting, automated checks for code and dependencies, container checks, and an inventory of the software included in each release.&lt;/p&gt;&#xA;&lt;h2 id=&#34;one-arc-1-instance-multiple-sap-systems&#34;&gt;One ARC-1 instance, multiple SAP systems&lt;/h2&gt;&#xA;&lt;p&gt;The biggest addition in version 1.0 is the experimental &lt;a href=&#34;https://docs.arc-1-mcp.com/multi-target-setup/&#34;&gt;multi-system mode&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;You can now deploy one ARC-1 application on SAP BTP Cloud Foundry and attach several SAP systems or clients through destinations in the same subaccount. An administrator chooses which destinations belong to ARC-1. It does not connect to every destination by accident.&lt;/p&gt;&#xA;&lt;p&gt;This is already used in productive BTP environments. Experimental in this case means that configuration and behavior can still change as more landscapes use it. It does not mean that the feature is only a local proof of concept or that people cannot use it today.&lt;/p&gt;&#xA;&lt;p&gt;Each system and client gets its own MCP address. There is also an optional combined connection for tasks that really need several systems. A system-specific address is the safer choice for normal work because the conversation is already connected to the correct target.&lt;/p&gt;&#xA;&lt;p&gt;Keeping the real user identity is the recommended setup. A user logs in on BTP and the identity is forwarded to SAP. SAP then checks the same authorizations the person already has. A shared technical user is possible for special cases, but it gives less clear responsibility and needs more care.&lt;/p&gt;&#xA;&lt;p&gt;This feature started with community requests and Wouter&amp;rsquo;s &lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/543&#34;&gt;first multi-backend implementation&lt;/a&gt;. His code and BTP experience gave the final design important groundwork. The production-focused design, security review, tests, and administrator documentation then landed in &lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/579&#34;&gt;PR #579&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-biggest-changes-in-short&#34;&gt;The biggest changes in short&lt;/h2&gt;&#xA;&lt;p&gt;I do not want to explain every feature here. These are the areas that matter most for 1.0:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Safer operation:&lt;/strong&gt; ARC-1 starts read-only. Higher-risk actions are separate choices, SAP still decides what the user may do, and teams get limits and audit information for shared use.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;More SAP compatibility:&lt;/strong&gt; testing and fixes now cover older NetWeaver systems, several S/4HANA releases, ABAP Platform 2025, BTP ABAP Environment, and S/4HANA Cloud Public Edition.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Better BTP guidance:&lt;/strong&gt; the &lt;a href=&#34;https://docs.arc-1-mcp.com/btp-overview/&#34;&gt;BTP overview&lt;/a&gt;, &lt;a href=&#34;https://docs.arc-1-mcp.com/btp-cloud-foundry-deployment/&#34;&gt;Cloud Foundry guide&lt;/a&gt;, &lt;a href=&#34;https://docs.arc-1-mcp.com/principal-propagation-setup/&#34;&gt;user identity guide&lt;/a&gt;, updates, rollback, destinations, roles, and multi-system operation are now documented as one path.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Reusable workflows:&lt;/strong&gt; 22 included skills cover RAP, tests, migrations, Clean Core analysis, transport reviews, system documentation, and more.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;More checks before a release:&lt;/strong&gt; ARC-1 runs automated tests against the code and real SAP systems, checks dependencies and containers, and publishes information about what is included in a release.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;For the exact technical list, including fixes for transport state, ABAP object types, BTP token exchange, tracing, and protocol compatibility, use the &lt;a href=&#34;https://docs.arc-1-mcp.com/release-notes/&#34;&gt;release notes&lt;/a&gt; and the &lt;a href=&#34;https://github.com/arc-mcp/arc-1/releases/tag/v1.0.0&#34;&gt;GitHub v1.0.0 release&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;skills-for-complete-sap-tasks&#34;&gt;Skills for complete SAP tasks&lt;/h2&gt;&#xA;&lt;p&gt;ARC-1 1.0 includes 22 skills. A skill is a reusable workflow for an AI assistant. It gives the assistant a tested way to approach a larger task instead of relying on one large prompt.&lt;/p&gt;&#xA;&lt;p&gt;The included skills cover creating RAP services and logic, ABAP and CDS tests, analytical models and queries, explaining and documenting existing code, finding slow SQL, Clean Core and S/4HANA migration work, unused-code checks, transport overviews and reviews, and modernizing legacy UI5 applications. There are also helpers to understand a system first, create a local ABAP mirror, and review an AI session. The &lt;a href=&#34;https://docs.arc-1-mcp.com/skills/&#34;&gt;full skills catalog&lt;/a&gt; has the complete list and installation options for Claude Code, GitHub Copilot, Cursor, Codex, and other assistants.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://github.com/arc-mcp/arc-1/tree/main/skills/migrate-segw-to-rap&#34;&gt;SEGW-to-RAP skill&lt;/a&gt; deserves a special mention. It reads an existing SEGW OData V2 service, including its model and custom code, and guides the move to a modern RAP V4 service. My &lt;a href=&#34;https://blog.zeis.de/posts/2026-05-11-segw-to-rap/&#34;&gt;SEGW-to-RAP post&lt;/a&gt; got one of the biggest responses of the whole ARC-1 series. That was a clear signal that many teams are not only interested in creating something new. They also need practical help to modernize the large amount of existing SAP applications.&lt;/p&gt;&#xA;&lt;h2 id=&#34;extensions-for-your-own-sap-apis&#34;&gt;Extensions for your own SAP APIs&lt;/h2&gt;&#xA;&lt;p&gt;ARC-1 will never include every custom API or company-specific endpoint. Forking the complete server for one internal tool is also difficult to maintain.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://docs.arc-1-mcp.com/extensions/&#34;&gt;extension framework&lt;/a&gt; gives you another option. It lets you add your own tools and reuse the SAP connection, safety checks, and audit path of the ARC-1 instance. This can be useful for an internal service or any API that is not part of the standard ARC-1 tools.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://github.com/arc-mcp/arc-1-extension-sample&#34;&gt;extension sample&lt;/a&gt; shows a simple configuration option and a code option. It also shows the safety limits. An extension cannot give itself more access than the ARC-1 instance already has, and changes still need to be enabled explicitly. Code extensions run inside ARC-1, so they should be reviewed like any other dependency.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/ClementRingot/LISA&#34;&gt;LISA&lt;/a&gt; is already a useful real example. It provides SAP translation tools as a standalone MCP server and as an ARC-1 extension. This proves both paths can work: build a separate focused service, or attach the capability to an existing ARC-1 deployment.&lt;/p&gt;&#xA;&lt;h2 id=&#34;reusing-the-btp-authentication-stack&#34;&gt;Reusing the BTP authentication stack&lt;/h2&gt;&#xA;&lt;p&gt;Login and keeping the correct SAP user were some of the hardest parts of ARC-1. Other SAP MCP servers need the same foundations, so this code is now available as the separate &lt;a href=&#34;https://www.npmjs.com/package/@arc-mcp/xsuaa-auth&#34;&gt;@arc-mcp/xsuaa-auth&lt;/a&gt; package.&lt;/p&gt;&#xA;&lt;p&gt;It provides the core pieces for deploying an MCP server to SAP BTP Cloud Foundry: login through XSUAA, reuse of BTP destinations, connections through Cloud Connector, and forwarding the real user to SAP. A project can reuse this setup and keep its own focused SAP API instead of copying the full ARC-1 server.&lt;/p&gt;&#xA;&lt;p&gt;ARC-1 uses the package itself. &lt;a href=&#34;https://github.com/ClementRingot/LISA&#34;&gt;LISA&lt;/a&gt; and &lt;a href=&#34;https://github.com/ClementRingot/ROSA&#34;&gt;ROSA&lt;/a&gt; use it as well, and &lt;a href=&#34;https://github.com/dnic-dev/bw-modeling-mcp&#34;&gt;BW Modeling MCP&lt;/a&gt; now uses it for its central SAP BTP Cloud Foundry setup. For me this is an important part of the release. The value of ARC-1 is not only the number of ABAP tools. The deployment and security principles can now help other projects too.&lt;/p&gt;&#xA;&lt;h2 id=&#34;a-new-home-for-the-project&#34;&gt;A new home for the project&lt;/h2&gt;&#xA;&lt;p&gt;ARC-1 moved from my personal GitHub account to the &lt;a href=&#34;https://github.com/arc-mcp&#34;&gt;arc-mcp organization&lt;/a&gt;. There is also a dedicated &lt;a href=&#34;https://arc-1-mcp.com/&#34;&gt;landing page&lt;/a&gt;, full documentation at &lt;a href=&#34;https://docs.arc-1-mcp.com/&#34;&gt;docs.arc-1-mcp.com&lt;/a&gt;, and a &lt;a href=&#34;https://live-arc-1.arc-1-mcp.com/&#34;&gt;live replay demo&lt;/a&gt; that works without a SAP system, credentials, or a live LLM.&lt;/p&gt;&#xA;&lt;p&gt;The organization now contains the main product, reusable components, experiments, and demos that are still active:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1&#34;&gt;arc-1&lt;/a&gt;: the main SAP ADT MCP server.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/xsuaa-auth&#34;&gt;xsuaa-auth&lt;/a&gt;: reusable XSUAA, OAuth, and BTP Principal Propagation.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1-extension-sample&#34;&gt;arc-1-extension-sample&lt;/a&gt;: examples for custom ARC-1 tools.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/adt-ls&#34;&gt;adt-ls&lt;/a&gt;: a TypeScript SDK for SAP&amp;rsquo;s headless ADT language server.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1-lsp&#34;&gt;arc-1-lsp&lt;/a&gt;: an experimental MCP server built on that language-server path.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc1-adt-abap-mcp-ext&#34;&gt;arc1-adt-abap-mcp-ext&lt;/a&gt;: an Eclipse extension adding read-only tools to SAP&amp;rsquo;s ADT MCP server.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1-abap-cicd-review&#34;&gt;arc-1-abap-cicd-review&lt;/a&gt;: an ABAP review workflow with GitHub Actions, abaplint, AI review, and live SAP checks.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc1-transport-review-poc&#34;&gt;arc1-transport-review-poc&lt;/a&gt;: a proof of concept for reviewing SAP transports through pull requests.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1-segw-to-rap&#34;&gt;arc-1-segw-to-rap&lt;/a&gt;: the SEGW, RAP, UI5, and Fiori elements modernization demo.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1-mcp.com&#34;&gt;arc-1-mcp.com&lt;/a&gt;: the source of the landing page.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/live-arc-1&#34;&gt;live-arc-1&lt;/a&gt;: the source of the interactive replay demo.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Not every repository has the same maturity. ARC-1 is the stable core. Some projects are reusable packages, some are beta, and some are intentionally proofs of concept. Keeping them separate makes this more visible and lets each idea develop without making the main server bigger.&lt;/p&gt;&#xA;&lt;h2 id=&#34;where-to-start&#34;&gt;Where to start&lt;/h2&gt;&#xA;&lt;p&gt;If you are new to ARC-1, use the &lt;a href=&#34;https://docs.arc-1-mcp.com/quickstart/&#34;&gt;quickstart&lt;/a&gt; with a development or sandbox system and start read-only. The live demo is useful if you first want to see how the workflows and tool calls look.&lt;/p&gt;&#xA;&lt;p&gt;For a team deployment, start with the &lt;a href=&#34;https://docs.arc-1-mcp.com/btp-overview/&#34;&gt;BTP overview&lt;/a&gt;. Decide the topology, identity model, destinations, and responsibilities before enabling more capabilities. Principal Propagation should be the normal choice when SAP needs to see the human user.&lt;/p&gt;&#xA;&lt;p&gt;If you already run ARC-1, follow the &lt;a href=&#34;https://docs.arc-1-mcp.com/updating/&#34;&gt;update guide&lt;/a&gt; and review the &lt;a href=&#34;https://docs.arc-1-mcp.com/release-notes/&#34;&gt;release notes&lt;/a&gt;. For production, pin a version instead of using &lt;code&gt;latest&lt;/code&gt;, keep the first acceptance test read-only, and review the current SAP API policy and your own agreements before enabling data preview or free SQL.&lt;/p&gt;&#xA;&lt;h2 id=&#34;arc-1-saps-mcp-server-and-the-api-policy&#34;&gt;ARC-1, SAP&amp;rsquo;s MCP server, and the API policy&lt;/h2&gt;&#xA;&lt;p&gt;SAP now also provides its own ABAP MCP server as part of the ABAP Development Tools. I do not see this as an either-or decision.&lt;/p&gt;&#xA;&lt;p&gt;SAP&amp;rsquo;s server is the natural choice for a developer who works inside VS Code or Eclipse and wants to reuse the existing IDE connection. ARC-1 has a different focus. It can run as a shared service on BTP, serve different AI clients and team workflows, cover classic and modern ABAP use cases, and give administrators one place for access rules and audit information. Many teams can use both.&lt;/p&gt;&#xA;&lt;p&gt;The detailed &lt;a href=&#34;https://docs.arc-1-mcp.com/arc-1-vs-sap-abap-mcp-server/&#34;&gt;ARC-1 and SAP ABAP MCP Server comparison&lt;/a&gt; explains where each option fits, where each one is stronger, and where each one has limits. It is meant as a decision guide, not as a sales comparison.&lt;/p&gt;&#xA;&lt;p&gt;More important for a wider rollout is the &lt;a href=&#34;https://docs.arc-1-mcp.com/sap-api-policy-and-architecture/&#34;&gt;SAP API Policy and architecture guide&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;ARC-1 uses the ADT interfaces behind SAP&amp;rsquo;s ABAP development tools. These interfaces have been used by SAP and third-party developer tools for many years, but the ADT web endpoints are not listed as published APIs in the SAP Business Accelerator Hub. SAP&amp;rsquo;s current API policy also talks directly about access by generative AI and autonomous agents.&lt;/p&gt;&#xA;&lt;p&gt;At the same time, SAP has published an architecture for third-party MCP servers. ARC-1 is close to this architecture, especially when it runs on SAP BTP Cloud Foundry with BTP login, destinations, Cloud Connector, the real SAP user identity, traffic limits, and audit logging. This is a good technical fit, but it is not by itself a legal approval for every customer and every landscape.&lt;/p&gt;&#xA;&lt;p&gt;My recommendation is simple. Start in development or test, start read-only, and keep SAP authorizations in control. Before a broader or production rollout, ask your SAP contact whether your agreement allows third-party tools to use the ADT endpoints in this way. The policy and SAP guidance can change, so check the current documents instead of relying only on this post.&lt;/p&gt;&#xA;&lt;h2 id=&#34;thank-you&#34;&gt;Thank you&lt;/h2&gt;&#xA;&lt;p&gt;ARC-1 1.0 is not the result of one large feature. It is the result of many small reports, tests, discussions, fixes, and reviews.&lt;/p&gt;&#xA;&lt;p&gt;Thank you to everyone who opened an issue or pull request, tested another SAP release, shared a BTP setup, challenged a security decision, built an extension, tried the documentation, or sent a private message. Even when I could not implement an idea directly, the feedback helped make the project clearer and safer.&lt;/p&gt;&#xA;&lt;p&gt;Feedback is still greatly appreciated. Open an &lt;a href=&#34;https://github.com/arc-mcp/arc-1/issues&#34;&gt;issue&lt;/a&gt; when something does not work or the documentation is unclear. Send a pull request when you have a fix or improvement. A private message is also welcome, especially when you want to share details about a real landscape or raise a security concern.&lt;/p&gt;&#xA;&lt;p&gt;Version 1.0 is a milestone, not the end. Now there is a stable base, public documentation, a clearer security process, and a growing set of reusable projects around it.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Creating an ARC-1 BTP Diagram with Codex and a draw.io Skill</title>
      <link>https://blog.zeis.de/posts/2026-07-10-btp-drawio-skill/</link>
      <pubDate>Thu, 09 Jul 2026 09:00:00 +0200</pubDate>
      <guid>https://blog.zeis.de/posts/2026-07-10-btp-drawio-skill/</guid>
      <description>&lt;p&gt;I wanted one practical thing: an editable draw.io diagram for ARC-1 on SAP BTP that looks like it belongs in the SAP Architecture Center.&lt;/p&gt;&#xA;&lt;p&gt;My first attempts with generic diagram prompts were not really useful. They often had dark backgrounds, icons that were too large, and arrows running through boxes. I wanted something closer to the SAP examples: a white canvas, the right BTP areas and service icons, understandable flows, and an editable draw.io file that I could still correct by hand.&lt;/p&gt;&#xA;&lt;p&gt;That became &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill&#34;&gt;&lt;code&gt;marianfoo/btp-drawio-skill&lt;/code&gt;&lt;/a&gt;, a skill for creating SAP Architecture Center-style &lt;code&gt;.drawio&lt;/code&gt; files from plain text.&lt;/p&gt;&#xA;&lt;h2 id=&#34;where-this-started&#34;&gt;Where this started&lt;/h2&gt;&#xA;&lt;p&gt;I did not start this from zero. The main source was SAP itself, and there are two related projects that are easy to mix up:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The &lt;a href=&#34;https://sap.github.io/btp-solution-diagrams/&#34;&gt;SAP BTP Solution Diagram Guidelines&lt;/a&gt; define how these diagrams should look: levels, areas, colors, icons, connectors, labels, and legends. The complete guideline and editable examples are in &lt;a href=&#34;https://github.com/SAP/btp-solution-diagrams&#34;&gt;&lt;code&gt;SAP/btp-solution-diagrams&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;The &lt;a href=&#34;https://architecture.learning.sap.com/&#34;&gt;SAP Architecture Center&lt;/a&gt; publishes real reference architectures for topics such as integration, identity, data, AI, and resiliency. Their source, including many editable &lt;code&gt;.drawio&lt;/code&gt; files, is in &lt;a href=&#34;https://github.com/SAP/architecture-center&#34;&gt;&lt;code&gt;SAP/architecture-center&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The skill bundles selected diagrams and assets from these official sources. This gives the model both parts it needs: the visual rules and real SAP-authored examples.&lt;/p&gt;&#xA;&lt;p&gt;Two community projects also appeared almost at the same time.&lt;/p&gt;&#xA;&lt;p&gt;Wouter Lemaire published &lt;a href=&#34;https://github.com/lemaiwo/btp-drawio-skill&#34;&gt;&lt;code&gt;lemaiwo/btp-drawio-skill&lt;/code&gt;&lt;/a&gt; on April 17. I took inspiration from its Claude marketplace structure and the idea of bundling the SAP icon XML libraries directly with the skill.&lt;/p&gt;&#xA;&lt;p&gt;One day later, &lt;a href=&#34;https://github.com/miyasuta/claude-drawio-btp-diagram&#34;&gt;&lt;code&gt;miyasuta/claude-drawio-btp-diagram&lt;/code&gt;&lt;/a&gt; appeared. I liked its separation between official guidelines, conventions, and concrete draw.io styles. Its center-alignment rule for straight connectors also became an important detail in my implementation.&lt;/p&gt;&#xA;&lt;p&gt;I started my repository on April 22 because I needed the ARC-1 diagram. From there I added a larger SAP Architecture Center corpus, template ranking, asset extraction, built-in fallback layouts, validation, scoring, visual comparison, and the nudge loop.&lt;/p&gt;&#xA;&lt;p&gt;The main lesson stayed simple: do not generate SAP diagrams from scratch when SAP already published the visual language and many real examples.&lt;/p&gt;&#xA;&lt;p&gt;Before the example, it helps to understand what the skill actually does.&lt;/p&gt;&#xA;&lt;h2 id=&#34;how-the-skill-works&#34;&gt;How the skill works&lt;/h2&gt;&#xA;&lt;p&gt;Without the skill, the model starts with an empty canvas and has to invent the layout. With the skill, it first decides what kind of diagram is needed and then looks for the closest SAP example.&lt;/p&gt;&#xA;&lt;p&gt;SAP defines three diagram levels based on the audience and required detail:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;L0&lt;/code&gt; is a business overview. It uses only a few blocks and simple neutral arrows. Technical details are left out.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;L1&lt;/code&gt; is a conceptual architecture. It shows named SAP services, the main zones such as BTP and on-premise, and the important flows between them.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;L2&lt;/code&gt; is a logical or technical architecture. It adds protocols, identity and trust flows, connector labels, and a legend. The ARC-1 example in this post is an L2 diagram.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The complete workflow looks like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Your architecture description&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Choose the level and closest SAP example&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Copy and adapt the example&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Validate -&amp;gt; render -&amp;gt; inspect -&amp;gt; correct&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Editable .drawio file and PNG&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The repository currently bundles 71 reference templates, 100 SAP BTP service icons, and 448 indexed draw.io assets. Most templates come from the two official SAP repositories above, with a few additional public SAP examples.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Find a starting point.&lt;/strong&gt; &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/scaffold_diagram.py&#34;&gt;&lt;code&gt;scaffold_diagram.py&lt;/code&gt;&lt;/a&gt; ranks the templates and copies the closest one. This copy is the scaffold.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Adapt only what changed.&lt;/strong&gt; The model keeps the SAP layout and uses helpers such as &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/relabel.py&#34;&gt;&lt;code&gt;relabel.py&lt;/code&gt;&lt;/a&gt;, &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/extract_icon.py&#34;&gt;&lt;code&gt;extract_icon.py&lt;/code&gt;&lt;/a&gt;, and &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/extract_asset.py&#34;&gt;&lt;code&gt;extract_asset.py&lt;/code&gt;&lt;/a&gt; to change labels and assets.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Use a smaller fallback when needed.&lt;/strong&gt; If the closest template is much larger than the requested diagram, &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/render_semantic.py&#34;&gt;&lt;code&gt;render_semantic.py&lt;/code&gt;&lt;/a&gt; can create a smaller layout for a few known patterns while keeping the SAP visual rules.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Check the result and look at it.&lt;/strong&gt; &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/autofix.py&#34;&gt;&lt;code&gt;autofix.py&lt;/code&gt;&lt;/a&gt; repairs known mechanical problems. &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/validate.py&#34;&gt;&lt;code&gt;validate.py&lt;/code&gt;&lt;/a&gt; checks colors, fonts, icons, labels, and arrow routing. &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/score_corpus.py&#34;&gt;&lt;code&gt;score_corpus.py&lt;/code&gt;&lt;/a&gt; compares the result with the SAP examples. Then &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/iterate.py&#34;&gt;&lt;code&gt;iterate.py&lt;/code&gt;&lt;/a&gt; and &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/render_compare.py&#34;&gt;&lt;code&gt;render_compare.py&lt;/code&gt;&lt;/a&gt; render the diagram so the model can inspect and correct it.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;The important limit is that these checks only understand the file and its visual structure. They do not know if the architecture itself is correct.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-sample-use-case-in-codex&#34;&gt;The sample use case in Codex&lt;/h2&gt;&#xA;&lt;p&gt;For the sample, I used the exact problem that started this project: a developer in VS Code asks an AI assistant to inspect an ABAP class through ARC-1.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Developer and AI assistant in VS Code&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               MCP&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ARC-1 on SAP BTP Cloud Foundry&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Destination + Connectivity + Cloud Connector&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;On-premise SAP ABAP system&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;XSUAA authenticates the client. Destination Service and Connectivity Service route the request through SAP Cloud Connector. Principal Propagation keeps the developer&amp;rsquo;s identity for the ABAP call.&lt;/p&gt;&#xA;&lt;p&gt;The diagram should make this complete path understandable for an SAP platform or development team. I used Codex to create it and kept the first result, the correction, and all validation output for the example below.&lt;/p&gt;&#xA;&lt;p&gt;The skill started as a Claude Code plugin, but the important part is portable. It is a folder with Markdown instructions, SAP templates, local assets, and Python scripts.&lt;/p&gt;&#xA;&lt;p&gt;For Codex I cloned the repository and pointed an &lt;code&gt;AGENTS.md&lt;/code&gt; file at the skill:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/marianfoo/btp-drawio-skill.git&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;For SAP architecture diagrams, use the sap-architecture skill at&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;path&amp;gt;/btp-drawio-skill/plugins/sap-architecture/skills/sap-architecture.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Read SKILL.md completely. Always scaffold before editing. Run autofix,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;validate, score, render, and inspect the image before finishing.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Never write the draw.io XML from scratch.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Codex reads the project instructions and can call the scripts directly. Python 3.8 or newer and shell access are required. The draw.io desktop app is only needed for PNG, SVG, or PDF export.&lt;/p&gt;&#xA;&lt;p&gt;For the example I described one focused L2 architecture:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create an L2 SAP Architecture Center-style diagram.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A developer uses an MCP-capable AI assistant in VS Code to inspect an ABAP&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;class through ARC-1. ARC-1 runs on SAP BTP Cloud Foundry and exposes /mcp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;over Streamable HTTP. The client authenticates through XSUAA. ARC-1 resolves&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;a PrincipalPropagation destination, uses Connectivity Service and SAP Cloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Connector, and reads the on-premise SAP ABAP system through ADT REST.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Zones: Developer Workstation, SAP BTP Cloud Foundry,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Customer On-Premise Network.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Output an editable .drawio, PNG, validation and score results,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;and the numbered flow narration.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;a href=&#34;artifacts/codex-prompt.txt&#34;&gt;complete prompt&lt;/a&gt; and a &lt;a href=&#34;artifacts/codex-agents.txt&#34;&gt;sanitized copy of the &lt;code&gt;AGENTS.md&lt;/code&gt; used for the run&lt;/a&gt; are attached to this post.&lt;/p&gt;&#xA;&lt;p&gt;Codex worked for 6 minutes and 42 seconds. It read the skill, ran the template selector, created a first pass, validated and rendered it, inspected the image, made one correction, and ran the checks again.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Codex run summary showing the selected templates, fallback decision, validator result, final score, and generated artifacts.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-07-10-btp-drawio-skill/images/codex-run-summary.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The selector correctly ranked &lt;code&gt;ac_RA0001_E2B_CloudConnector.drawio&lt;/code&gt; first. But this SAP reference has 24 cards and a much larger scope. Removing enough cards for my focused ARC-1 flow would remove more than one third of the template.&lt;/p&gt;&#xA;&lt;p&gt;Codex therefore switched to the skill&amp;rsquo;s built-in &lt;code&gt;on-prem-connectivity&lt;/code&gt; renderer. This was one of the improvements I added: start with the closest SAP example, but do not force a large template into a much smaller use case. The renderer still uses the same SAP palette, dimensions, assets, and validation rules.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-first-pass-scored-100-but-was-wrong&#34;&gt;The first pass scored 100, but was wrong&lt;/h2&gt;&#xA;&lt;p&gt;This was the first complete diagram:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;First generated ARC-1 connectivity diagram. It still contains generic HTTPS, OData/REST, and SAP S/4HANA labels.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-07-10-btp-drawio-skill/images/arc-1-btp-cf-onprem-first-pass.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The validator returned &lt;code&gt;OK&lt;/code&gt;, and the reference-free SAP-likeness score was &lt;code&gt;100.0/100&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;That sounds good, but it was still wrong for my use case.&lt;/p&gt;&#xA;&lt;p&gt;The title was generic. The VS Code flow used &lt;code&gt;HTTPS&lt;/code&gt; instead of &lt;code&gt;MCP&lt;/code&gt;. The backend connection said &lt;code&gt;OData/REST&lt;/code&gt;, although ARC-1 uses the ADT REST API. It also named SAP S/4HANA even though I wanted a generic on-premise SAP ABAP system.&lt;/p&gt;&#xA;&lt;p&gt;This is the part I find most useful. A score can tell me that the file follows the expected visual rules. It cannot prove that the architecture says the right thing.&lt;/p&gt;&#xA;&lt;p&gt;Codex inspected the rendered PNG and made one focused correction. It kept the layout and corrected the labels and colors: MCP in teal, XSUAA and Principal Propagation in green, ARC-1 as the purple focus application, and ADT REST for the backend call.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Final ARC-1 on SAP BTP Cloud Foundry diagram after one visual and semantic correction.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-07-10-btp-drawio-skill/images/arc-1-btp-cf-onprem-final.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The final result passed validation without errors or warnings. Its SAP-likeness score was &lt;code&gt;96.7/100&lt;/code&gt;, slightly lower than the first pass, but the diagram was now correct for ARC-1. The scorer still reported two vocabulary advisories for &lt;code&gt;OAUTH JWT&lt;/code&gt; and &lt;code&gt;mTLS PP&lt;/code&gt;. I kept them because they explain the exact identity flow and are already part of the skill&amp;rsquo;s L2 layout guidance.&lt;/p&gt;&#xA;&lt;p&gt;While preparing this post, I found one more export problem. The draw.io file did not store the white page background explicitly, and one PNG export came out black. I set the page background to white in both attached &lt;code&gt;.drawio&lt;/code&gt; files and exported them again. The validator had accepted the missing value as the default background. This was another useful reminder that I still need to look at the final image.&lt;/p&gt;&#xA;&lt;p&gt;That is also why I would use a strong reasoning model for this task. The skill removes a lot of guessing, but the model still has to read the workflow, choose between a template and fallback, understand the architecture, inspect an image, and notice when a high-scoring result is semantically wrong. I did not compare several Codex models in this run, so this is not a model benchmark.&lt;/p&gt;&#xA;&lt;p&gt;The artifacts from the run are available here:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;artifacts/run-report.txt&#34;&gt;Full Codex run report&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;artifacts/arc-1-btp-cf-onprem-first-pass.drawio&#34;&gt;First-pass editable draw.io&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;artifacts/arc-1-btp-cf-onprem-final.drawio&#34;&gt;Final editable draw.io&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;artifacts/arc-1-btp-cf-onprem-flow.txt&#34;&gt;Numbered flow narration&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;artifacts/first-pass-validation.txt&#34;&gt;First-pass validation&lt;/a&gt; and &lt;a href=&#34;artifacts/first-pass-score.txt&#34;&gt;score&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;artifacts/final-validation.txt&#34;&gt;Final validation&lt;/a&gt; and &lt;a href=&#34;artifacts/final-score.txt&#34;&gt;score&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;how-to-prompt-it&#34;&gt;How to prompt it&lt;/h2&gt;&#xA;&lt;p&gt;The skill works best when the prompt describes an architecture, not only a product list. Include:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Level: &lt;code&gt;L0&lt;/code&gt;, &lt;code&gt;L1&lt;/code&gt;, or &lt;code&gt;L2&lt;/code&gt;, based on the audience and required detail.&lt;/li&gt;&#xA;&lt;li&gt;Audience: business overview, solution architecture, or implementation team.&lt;/li&gt;&#xA;&lt;li&gt;Zones: client, SAP BTP, SAP cloud applications, on-premise, or third party.&lt;/li&gt;&#xA;&lt;li&gt;Exact services: this improves SAP icon and asset selection.&lt;/li&gt;&#xA;&lt;li&gt;Backend systems: for example SAP S/4HANA, ECC, BW/4HANA, or a generic ABAP system.&lt;/li&gt;&#xA;&lt;li&gt;Identity: IAS, XSUAA, OAuth, SAML, Principal Propagation, trust, and authorization.&lt;/li&gt;&#xA;&lt;li&gt;Numbered flow steps and protocols such as MCP, HTTPS, ADT REST, OData, A2A, or SAML2/OIDC.&lt;/li&gt;&#xA;&lt;li&gt;Constraints and exclusions: what must be shown and what should stay out.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;A weak prompt is:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Draw ARC-1 with BTP and SAP.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That leaves the model guessing about the level, zones, identity, backend protocol, and even the purpose of the diagram.&lt;/p&gt;&#xA;&lt;p&gt;The skill is also an authoring assistant, not a one-shot generator. Give visual feedback such as:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&amp;ldquo;The icons overlap the text. Use the normal SAP icon size.&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;&amp;ldquo;The MCP flow should be teal.&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;&amp;ldquo;Cloud Connector belongs in the on-premise network.&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;&amp;ldquo;The backend call is ADT REST, not OData.&amp;rdquo;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Specific feedback maps to a concrete edit. &amp;ldquo;Make it better&amp;rdquo; usually does not.&lt;/p&gt;&#xA;&lt;h2 id=&#34;where-it-works-and-where-it-stops&#34;&gt;Where it works and where it stops&lt;/h2&gt;&#xA;&lt;p&gt;It works best for a focused L1 or L2 diagram with explicit zones and flows, especially when a reference from the same architecture family exists.&lt;/p&gt;&#xA;&lt;p&gt;Sometimes no close template exists. Then another model retry does not solve the problem. The skill can use a deterministic fallback for a few known patterns, but other diagrams still need manual draw.io work or another reference template.&lt;/p&gt;&#xA;&lt;p&gt;The validator also cannot prove semantic correctness. The Codex run above showed that clearly. A diagram can be valid, visually SAP-like, and still use the wrong protocol or product name.&lt;/p&gt;&#xA;&lt;p&gt;For me, the value is not a perfect architecture from one sentence. The value is a much better editable first draft, a repeatable way to check it, and a clear loop for the last correction.&lt;/p&gt;&#xA;&lt;h2 id=&#34;links&#34;&gt;Links&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill&#34;&gt;&lt;code&gt;marianfoo/btp-drawio-skill&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/miyasuta/claude-drawio-btp-diagram&#34;&gt;&lt;code&gt;miyasuta/claude-drawio-btp-diagram&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/lemaiwo/btp-drawio-skill&#34;&gt;&lt;code&gt;lemaiwo/btp-drawio-skill&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://sap.github.io/btp-solution-diagrams/&#34;&gt;SAP BTP Solution Diagram Guidelines&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/SAP/btp-solution-diagrams&#34;&gt;&lt;code&gt;SAP/btp-solution-diagrams&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/SAP/architecture-center&#34;&gt;&lt;code&gt;SAP/architecture-center&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1&#34;&gt;ARC-1 on GitHub&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.zeis.de/posts/2026-04-27-arc-1/&#34;&gt;Introducing ARC-1&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.zeis.de/posts/2026-04-29-arc-1-btp/&#34;&gt;ARC-1 on SAP BTP&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>ARC-1 with Joule Studio: Bringing Real ABAP System Context into Joule</title>
      <link>https://blog.zeis.de/posts/2026-05-08-arc-1-joule-studio-clean-core/</link>
      <pubDate>Wed, 06 May 2026 09:00:00 +0200</pubDate>
      <guid>https://blog.zeis.de/posts/2026-05-08-arc-1-joule-studio-clean-core/</guid>
      <description>&lt;p&gt;Series note: This post is part of my &lt;a href=&#34;https://blog.zeis.de/tags/ai-abap-development-series/&#34;&gt;AI ABAP development series&lt;/a&gt;, where I go from AI development in general, to ABAP-specific problems, and then to ARC-1.&lt;/p&gt;&#xA;&lt;p&gt;In the &lt;a href=&#34;https://blog.zeis.de/posts/2026-05-05-arc-1-copilot-studio/&#34;&gt;previous post&lt;/a&gt;, I showed &lt;a href=&#34;https://github.com/arc-mcp/arc-1&#34;&gt;ARC-1&lt;/a&gt; with Microsoft Copilot Studio. The idea was that SAP system context should not be locked inside a local IDE. If ARC-1 runs centrally on SAP BTP, it can also be used from Teams, Microsoft 365 Copilot, SharePoint, Jira, and other places where functional consultants, architects, support teams, and project leads already work.&lt;/p&gt;&#xA;&lt;p&gt;This post is the SAP-native version of that idea. If Microsoft Copilot Studio is close to the Microsoft workday, then &lt;a href=&#34;https://help.sap.com/docs/JOULE/3fdd7b321eb24d1b9d40605dce822e84&#34;&gt;Joule&lt;/a&gt; is close to the SAP workday. SAP describes Joule as the unified assistant experience across SAP&amp;rsquo;s solution portfolio, and &lt;a href=&#34;https://help.sap.com/docs/Joule_Studio/45f9d2b8914b4f0ba731570ff9a85313/4444cd1ce4cd471bbe127ea2e4735b40.html&#34;&gt;Joule Studio&lt;/a&gt; as the place to build custom Joule agents with SAP and non-SAP integrations.&lt;/p&gt;&#xA;&lt;p&gt;So the question is not only: can Joule call another MCP server? The better question is: can the ARC-1 capabilities be brought to the place where SAP users already ask questions?&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-carries-over-from-earlier-posts&#34;&gt;What Carries Over From Earlier Posts&lt;/h2&gt;&#xA;&lt;p&gt;ARC-1 is a secure ADT MCP server for ABAP systems. It connects AI clients to SAP systems through &lt;a href=&#34;https://help.sap.com/docs/btp/sap-business-technology-platform/abap-development-user-guides&#34;&gt;ABAP Development Tools&lt;/a&gt; APIs and exposes this through tools like &lt;a href=&#34;https://docs.arc-1-mcp.com/tools/&#34;&gt;SAPRead, SAPSearch, SAPWrite, SAPActivate, SAPContext, SAPDiagnose, SAPTransport, and SAPManage&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;For this post, the important part is not the full tool list. It is the operating model from the earlier BTP post:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;central server instead of every user laptop&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;safe by default instead of allow all by default&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server ceiling + user permission + SAP authorization&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;audit logging instead of invisible local tool calls&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the &lt;a href=&#34;https://blog.zeis.de/posts/2026-04-29-arc-1-btp/&#34;&gt;BTP post&lt;/a&gt;, I described how ARC-1 can run as a central Cloud Foundry application with &lt;a href=&#34;https://docs.arc-1-mcp.com/xsuaa-setup/&#34;&gt;XSUAA&lt;/a&gt;, &lt;a href=&#34;https://docs.arc-1-mcp.com/btp-destination-setup/&#34;&gt;BTP destinations&lt;/a&gt;, &lt;a href=&#34;https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/cloud-connector&#34;&gt;Cloud Connector&lt;/a&gt;, &lt;a href=&#34;https://docs.arc-1-mcp.com/principal-propagation-setup/&#34;&gt;Principal Propagation&lt;/a&gt;, roles, and BTP audit logging. For Joule Studio, I would not create a second SAP access architecture. I would reuse that controlled endpoint.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-arc-1-adds-to-joule&#34;&gt;What ARC-1 Adds To Joule&lt;/h2&gt;&#xA;&lt;p&gt;Joule already has useful SAP context. SAP has &lt;a href=&#34;https://help.sap.com/docs/btp/btp-developers-guide/use-joule-for-developers-generative-ai-in-abap-cloud&#34;&gt;Joule for Developers&lt;/a&gt;, &lt;a href=&#34;https://help.sap.com/docs/abap-ai/generative-ai-in-abap-cloud/joule-for-developers-abap-ai-capabilities-5f175c94900741d6af3dbb23ce37e81a&#34;&gt;Joule for Developers, ABAP AI capabilities&lt;/a&gt;, and &lt;a href=&#34;https://help.sap.com/docs/joule/serviceguide/sap-consulting-capability-for-joule&#34;&gt;Joule for Consultants&lt;/a&gt;. So this is not about pretending Joule cannot help with ABAP at all.&lt;/p&gt;&#xA;&lt;p&gt;But there is a difference between a useful standard assistant and a tool that can query my actual ABAP system through ADT, read my custom code, inspect dependencies, run diagnostics, check release state, read ATC findings, and create a system-specific proposal.&lt;/p&gt;&#xA;&lt;p&gt;That workflow is not something I get just by opening standard Joule. If SAP does not expose this level of ABAP system access in Joule today, a custom MCP server can still bring it there. With ARC-1, Joule is no longer limited to general SAP knowledge or predefined product capabilities. It can ask the real ABAP system.&lt;/p&gt;&#xA;&lt;p&gt;Not because the model became smarter. Because the tool access became better.&lt;/p&gt;&#xA;&lt;p&gt;That matters beyond pure development. The same ADT-backed context can help architects with Clean Core planning, functional consultants with impact analysis, support teams with dumps and bug analysis, quality leads with ATC reporting, and developers with implementation proposals.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-architecture-i-would-show&#34;&gt;The Architecture I Would Show&lt;/h2&gt;&#xA;&lt;p&gt;SAP&amp;rsquo;s Architecture Center describes &lt;a href=&#34;https://architecture.learning.sap.com/docs/ref-arch/ca1d2a3e/1&#34;&gt;A2A and MCP for interoperability&lt;/a&gt;. The important part for this post is the direction: Joule as the user-facing assistant, A2A for agent-to-agent collaboration, and MCP for tool access. SAP also describes an &lt;a href=&#34;https://architecture.learning.sap.com/docs/ref-arch/ca1d2a3e/1#mcp-gateway-in-integration-suite&#34;&gt;MCP Gateway in SAP Integration Suite&lt;/a&gt; as a governed way to expose SAP and non-SAP APIs, integrations, data sources, and external MCP servers as tools for AI agents.&lt;/p&gt;&#xA;&lt;p&gt;ARC-1 fits that pattern as the ADT development-tooling adapter:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;User in Joule&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; Joule Studio Agent&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; SAP Integration Suite API Management / future MCP Gateway&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; ARC-1 on SAP BTP Cloud Foundry&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; Destination Service + Connectivity Service&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; SAP Cloud Connector&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; SAP S/4HANA or ABAP system&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; ADT development APIs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ARC-1 can fit the architecture pattern SAP describes. Joule is the user-facing AI entry point, Integration Suite is the governed access layer, ARC-1 is the ADT adapter, and the SAP system stays protected behind BTP connectivity and SAP authorizations.&lt;/p&gt;&#xA;&lt;p&gt;There are still open points. &lt;a href=&#34;https://help.sap.com/docs/Joule_Studio/45f9d2b8914b4f0ba731570ff9a85313/3d9dfad0bc39468292d508f0808a12fe.html&#34;&gt;Joule Studio already supports adding MCP servers&lt;/a&gt; through BTP destinations, but the documentation also lists restrictions: the destination must be streamable HTTP and MCP servers requiring interactive OAuth user authorization are not supported. SAP also shows MCP hub capabilities on the roadmap, but from what I can see this is still a future SAP Build capability and not the fully available enterprise MCP hub today.&lt;/p&gt;&#xA;&lt;p&gt;So I would present this as a target architecture and showcase, not as a final productive setup guide yet.&lt;/p&gt;&#xA;&lt;p&gt;For the showcase, I configured a Joule Studio agent with a small instruction set, Anthropic Claude Sonnet 4 as model, and two MCP servers: &lt;a href=&#34;https://github.com/arc-mcp/arc-1&#34;&gt;ARC-1&lt;/a&gt; for the ABAP system and the &lt;a href=&#34;https://github.com/marianfoo/mcp-sap-docs&#34;&gt;SAP Docs MCP Server&lt;/a&gt; for official SAP documentation context. I condensed the screenshots here to show only the relevant configuration parts:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Condensed Joule Studio agent configuration showing the agent basics, instructions, model settings, execution steps, and MCP servers for ARC-1 and SAP_DOCS.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-05-08-arc-1-joule-studio-clean-core/joule-studio-agent-configuration.png&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;use-cases-i-would-show-in-this-post&#34;&gt;Use Cases I Would Show In This Post&lt;/h2&gt;&#xA;&lt;p&gt;I would not repeat all Copilot Studio examples. The Joule post should show scenarios that make sense because the user starts inside the SAP world, not in Teams or SharePoint.&lt;/p&gt;&#xA;&lt;p&gt;One note before the screenshots: I was not able to change the language in this Joule setup, so the screenshots are in German. I describe the important parts in English below each screenshot.&lt;/p&gt;&#xA;&lt;p&gt;The first task for the agent is a Clean Core readiness check for one object. It is narrow enough to be understandable and safe enough because it can be read-only:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Check whether ZCL_ARC1_DEMO_CCORE is clean-core ready.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Use the real SAP system, ATC where possible, API release state, and SAP documentation.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Do not change anything. Return risks, evidence, and suggested next steps.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is a good first agent task because it shows the difference between &amp;ldquo;Joule explains Clean Core&amp;rdquo; and &amp;ldquo;Joule analyzes this class in this SAP system for Clean Core risk&amp;rdquo;. ARC-1 reads the ABAP source, dependencies, ATC findings, and &lt;code&gt;API_STATE&lt;/code&gt;. &lt;a href=&#34;https://mcp-sap-docs.marianzeis.de/&#34;&gt;mcp-sap-docs&lt;/a&gt; adds SAP guidance and released API context. Joule returns a short assessment with evidence.&lt;/p&gt;&#xA;&lt;p&gt;This is the kind of result I mean:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Joule showing a Clean Core readiness analysis for ZCL_ARC1_DEMO_CCORE with API release state, used SAP tables, and ATC result.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-05-08-arc-1-joule-studio-clean-core/joule-clean-core-object-analysis.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The screenshot is still a rough showcase, but it already shows the value. Joule is not only giving generic Clean Core advice. It can show that the class is not released for the relevant contracts, that it uses &lt;code&gt;USR02&lt;/code&gt; and &lt;code&gt;BUT000&lt;/code&gt;, and that there are no ATC findings in this small example. That is a much better starting point for an architect or developer than a general explanation of what Clean Core means.&lt;/p&gt;&#xA;&lt;p&gt;I also asked a follow-up prompt for a dependency diagram. The result was almost the answer I wanted: not perfect, but useful because it returned a Mermaid diagram and an evidence table instead of only prose. You can open the &lt;a href=&#34;https://blog.zeis.de/posts/2026-05-08-arc-1-joule-studio-clean-core/full-reply/&#34;&gt;translated and rendered full Joule reply here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The second use case is package-level modernization planning. This is where an agent is useful because it needs multiple tool calls, grouping, prioritization, and a bit more reasoning:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Analyze package ZSD_LEGACY for Clean Core and ABAP Cloud risks.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Group the findings and create a modernization backlog.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Do not change code.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The same agent can combine ARC-1 for package content, dependencies, ATC, release state, and where-used information with SAP documentation for official guidance. The output should be a backlog, not a &amp;ldquo;fixed everything&amp;rdquo; claim:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Priority 1: direct SAP table usage with released successors&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Priority 2: ATC findings with clear fix direction&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Priority 3: objects that need architecture discussion&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Priority 4: probably dead or low-value code to review later&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This screenshot shows another interesting part of Joule. The response is not only a long text answer. Joule created a left-side list with grouped findings and backlog items, and the selected item is shown with details on the right side:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Joule showing an interactive package modernization backlog with grouped Clean Core and ABAP Cloud risk categories on the left and details on the right.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-05-08-arc-1-joule-studio-clean-core/joule-package-modernization-backlog.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;In this run, the package &lt;code&gt;ZSD_LEGACY&lt;/code&gt; did not exist. Joule still searched the system and found 28 &lt;code&gt;ZSD*&lt;/code&gt; objects that may represent legacy risks. It grouped them into high, medium, and low risk buckets, and then created a modernization backlog. The selected high-risk card shows temporary &lt;code&gt;$TMP&lt;/code&gt; package objects, split into service definitions, tables, and message classes. That is not a final assessment, but it is a useful interactive starting point.&lt;/p&gt;&#xA;&lt;p&gt;These examples have a better through line for this post than repeating the Copilot Studio demos. Copilot Studio is good when the work starts in Microsoft 365. Joule Studio is good when the work starts in SAP, but still needs real ABAP system context.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-i-use-an-agent-here&#34;&gt;Why I Use An Agent Here&lt;/h2&gt;&#xA;&lt;p&gt;For this showcase an agent is perfectly fine. The interesting part is not the packaging. The interesting part is that Joule can call &lt;a href=&#34;https://github.com/arc-mcp/arc-1&#34;&gt;ARC-1&lt;/a&gt; and the &lt;a href=&#34;https://github.com/marianfoo/mcp-sap-docs&#34;&gt;SAP Docs MCP Server&lt;/a&gt;, collect system evidence, and turn that into something useful for the user.&lt;/p&gt;&#xA;&lt;p&gt;For ARC-1 I would still keep the first Joule Studio agent conservative: one object or one package, read-only by default, no automatic rewrite. I would not start with a big automation story. I would start with analysis, evidence, and a proposal.&lt;/p&gt;&#xA;&lt;p&gt;And yes, you can also vibe code with this. If write access is enabled for a development or sandbox system, a Joule Studio agent can propose changes and call ARC-1 to apply them. I just do not want this to be the main story here, because the more important point is the architecture: first give Joule controlled access to real ABAP system context, then decide which write actions are safe enough.&lt;/p&gt;&#xA;&lt;h2 id=&#34;open-points&#34;&gt;Open Points&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://help.sap.com/doc/sap-api-policy/latest/en-US/API_Policy_latest.pdf&#34;&gt;SAP API Policy&lt;/a&gt; also matters here, but it should not become the whole post. ARC-1 should be positioned as ADT development tooling, not as a generic business-data extraction layer. Clean Core checks, ATC, code inspection, syntax checks, ABAP Unit, activation, and development support are the story. Data extraction is not the story.&lt;/p&gt;&#xA;&lt;p&gt;This is also why the Joule Studio architecture is interesting. SAP&amp;rsquo;s architecture guidance describes SAP Integration Suite and API Management as part of a governed pathway for AI agents, including a governance layer like an MCP gateway in front of APIs. That is much closer to the setup in this post than a local MCP server on a developer laptop. It gives the agent a controlled entry point, central configuration, identity, monitoring, and auditability. It does not mean every possible ADT usage is automatically fine, but the architecture shape is much closer to what SAP is describing for API agents.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-this-matters&#34;&gt;Why This Matters&lt;/h2&gt;&#xA;&lt;p&gt;Copilot Studio and Joule Studio are different surfaces:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Copilot Studio = close to Teams, Microsoft 365, SharePoint, Excel, Word, Jira&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Joule Studio = close to SAP products, SAP Build, Joule agents, SAP users&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ARC-1 = governed ABAP system access layer that can serve both&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The client can change, but the security model should not. For me that is the main point. ARC-1 should not be locked to Claude, Cursor, Copilot Studio, or Joule Studio. If the company allows it, the same governed ARC-1 endpoint should be usable from different AI clients.&lt;/p&gt;&#xA;&lt;p&gt;And ARC-1 is open source, which is important to me. If this kind of access layer becomes part of SAP AI architectures, then people should be able to inspect how it works, challenge the security model, test it against real systems, and decide for themselves if it fits their landscape.&lt;/p&gt;&#xA;&lt;p&gt;Also, this does not have to start with write access. Even read-only mode is already very powerful. Reading code, dependencies, ATC findings, release state, dumps, messages, packages, and where-used information can help architects, consultants, support teams, and developers without the assistant writing a single line of ABAP.&lt;/p&gt;&#xA;&lt;p&gt;The target picture is not &amp;ldquo;AI writes ABAP from a chat prompt&amp;rdquo;. The better target is:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;the user asks inside Joule&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Joule has access to the right tools&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ARC-1 provides real ABAP system context&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SAP documentation provides the official direction&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Integration Suite provides governance&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SAP authorizations still protect the backend&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;humans approve the risky parts&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That is much more interesting than a local MCP demo. It is also much closer to what I think enterprise ABAP agentic development needs.&lt;/p&gt;&#xA;&lt;h2 id=&#34;discuss-this-post&#34;&gt;Discuss this post&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://saptodon.org/@Mianbsp/116529573994656695&#34;&gt;Saptodon&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://bsky.app/profile/marian.zeis.de/post/3ml7kulu55s2v&#34;&gt;Bluesky&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.linkedin.com/posts/marianzeis_what-if-joule-could-answer-abap-and-clean-activity-7458010353239691264-gbF0&#34;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;references--links&#34;&gt;References &amp;amp; links&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1&#34;&gt;ARC-1 on GitHub&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/&#34;&gt;ARC-1 Documentation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/tools/&#34;&gt;ARC-1 Tools&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/authorization/&#34;&gt;ARC-1 Authorization and Roles&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/phase4-btp-deployment/&#34;&gt;ARC-1 BTP Cloud Foundry Deployment&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/principal-propagation-setup/&#34;&gt;ARC-1 Principal Propagation Setup&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mcp-sap-docs.marianzeis.de/&#34;&gt;mcp-sap-docs&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://help.sap.com/docs/JOULE/3fdd7b321eb24d1b9d40605dce822e84&#34;&gt;SAP Help: What is Joule?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://help.sap.com/docs/Joule_Studio/45f9d2b8914b4f0ba731570ff9a85313/4444cd1ce4cd471bbe127ea2e4735b40.html&#34;&gt;SAP Help: What is Joule Studio?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://help.sap.com/docs/Joule_Studio/45f9d2b8914b4f0ba731570ff9a85313/3d9dfad0bc39468292d508f0808a12fe.html&#34;&gt;SAP Help: Add MCP Servers to Your Joule Agent&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://architecture.learning.sap.com/docs/ref-arch/ca1d2a3e/1&#34;&gt;SAP Architecture Center: A2A and MCP for Interoperability&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://help.sap.com/docs/integration-suite/sap-integration-suite/api-management-capability&#34;&gt;SAP Integration Suite API Management&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://help.sap.com/docs/btp/btp-developers-guide/use-joule-for-developers-generative-ai-in-abap-cloud&#34;&gt;SAP Joule for Developers&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://help.sap.com/docs/abap-ai/generative-ai-in-abap-cloud/joule-for-developers-abap-ai-capabilities-5f175c94900741d6af3dbb23ce37e81a&#34;&gt;SAP Joule for Developers, ABAP AI capabilities&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://help.sap.com/docs/joule/serviceguide/sap-consulting-capability-for-joule&#34;&gt;SAP Joule for Consultants&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://help.sap.com/doc/sap-api-policy/latest/en-US/API_Policy_latest.pdf&#34;&gt;SAP API Policy&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>ARC-1 with Copilot Studio: SAP System Context Beyond Developers</title>
      <link>https://blog.zeis.de/posts/2026-05-05-arc-1-copilot-studio/</link>
      <pubDate>Mon, 04 May 2026 09:00:00 +0200</pubDate>
      <guid>https://blog.zeis.de/posts/2026-05-05-arc-1-copilot-studio/</guid>
      <description>&lt;p&gt;Series note: This post is part of my &lt;a href=&#34;https://blog.zeis.de/tags/ai-abap-development-series/&#34;&gt;AI ABAP development series&lt;/a&gt;, where I go from AI development in general, to ABAP-specific problems, and then to ARC-1.&lt;/p&gt;&#xA;&lt;p&gt;In the &lt;a href=&#34;https://blog.zeis.de/posts/2026-04-29-arc-1-btp/&#34;&gt;previous post&lt;/a&gt;, I wrote about running &lt;a href=&#34;https://github.com/arc-mcp/arc-1&#34;&gt;ARC-1&lt;/a&gt; on SAP BTP. That was the architecture part: central deployment, XSUAA, destinations, Cloud Connector, Principal Propagation, roles, and auditability.&lt;/p&gt;&#xA;&lt;p&gt;This post is the next step. If ARC-1 is already deployed centrally on BTP, then it does not have to be used only from developer tools like VS Code, Claude, Cursor, or Eclipse. It can also be used from &lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-copilot-studio/&#34;&gt;Microsoft Copilot Studio&lt;/a&gt; and then published into &lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-copilot-studio/publication-add-bot-to-microsoft-teams&#34;&gt;Teams or Microsoft 365 Copilot&lt;/a&gt;. That changes the audience quite a bit.&lt;/p&gt;&#xA;&lt;p&gt;For developers, ARC-1 is mainly an ADT MCP gateway for code, packages, activation, transports, diagnostics, and system context. MCP is the protocol that lets an AI client call external tools, and ADT is the API layer behind &lt;a href=&#34;https://help.sap.com/docs/btp/sap-business-technology-platform/abap-development-user-guides&#34;&gt;ABAP Development Tools&lt;/a&gt;. But this SAP system access is not only useful for developers. &lt;a href=&#34;https://docs.arc-1-mcp.com/tools/&#34;&gt;ARC-1 tools&lt;/a&gt; can also expose table structures, selected data, messages, transaction metadata, API release state, feature toggles, FLP content, dumps, transport information, and more. Depending on the enabled ARC-1 tools and SAP authorizations, that can become useful for functional consultants, solution architects, testers, security people, and support teams.&lt;/p&gt;&#xA;&lt;p&gt;The question for this post is: what happens if the SAP system context is not only available inside an IDE?&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-copilot-studio-fits-here&#34;&gt;Why Copilot Studio fits here&lt;/h2&gt;&#xA;&lt;p&gt;Functional consultants usually do not live in a local IDE. They work in Teams, Excel, Word, SharePoint, Jira, SAP GUI, Fiori, and many other tools around the actual system. So if the only AI access pattern is &amp;ldquo;install an MCP server locally and configure your IDE&amp;rdquo;, then we miss a large part of the SAP project team.&lt;/p&gt;&#xA;&lt;p&gt;Copilot Studio fits here because it is already close to where many business users work. An agent can be &lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-copilot-studio/publication-add-bot-to-microsoft-teams&#34;&gt;published into Teams and Microsoft 365 Copilot&lt;/a&gt;. It can use &lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-copilot-studio/knowledge-add-sharepoint&#34;&gt;SharePoint as a knowledge source&lt;/a&gt;. It can use connectors for systems like &lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-365/copilot/connectors/jira-cloud-deployment&#34;&gt;Jira Cloud&lt;/a&gt;, and the same idea also applies to other enterprise sources like Confluence if there is a connector or MCP server for it. I did not use Confluence in this test, but the architecture would be the same. And since Copilot Studio can &lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-copilot-studio/mcp-add-existing-server-to-agent&#34;&gt;connect to existing MCP servers&lt;/a&gt;, it can also call ARC-1 when the server is deployed to BTP.&lt;/p&gt;&#xA;&lt;p&gt;That does not mean everyone should get write access to SAP from Teams. Quite the opposite. For this kind of usage I would start read-only and very controlled. But even read-only is already powerful if the agent can combine:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;A business specification from SharePoint.&lt;/li&gt;&#xA;&lt;li&gt;SAP documentation from the separately deployed &lt;a href=&#34;https://mcp-sap-docs.marianzeis.de/&#34;&gt;mcp-sap-docs&lt;/a&gt; MCP server.&lt;/li&gt;&#xA;&lt;li&gt;Real system context from ARC-1.&lt;/li&gt;&#xA;&lt;li&gt;Tickets or tasks from Jira.&lt;/li&gt;&#xA;&lt;li&gt;The conversation interface in Teams.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;the-architecture-stays-the-same&#34;&gt;The Architecture Stays The Same&lt;/h2&gt;&#xA;&lt;p&gt;Copilot Studio should not create a second SAP access architecture. It should use the same &lt;a href=&#34;https://docs.arc-1-mcp.com/phase4-btp-deployment/&#34;&gt;BTP-deployed ARC-1 endpoint&lt;/a&gt; from the previous post.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Copilot Studio / Teams&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; ARC-1 MCP endpoint on SAP BTP&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; XSUAA / OAuth&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; Destination Service&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; Cloud Connector&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; SAP ABAP system&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This means the security story does not change only because the client changes. ARC-1 still has the &lt;a href=&#34;https://docs.arc-1-mcp.com/authorization/#the-model-in-one-picture&#34;&gt;server ceiling&lt;/a&gt;. &lt;a href=&#34;https://docs.arc-1-mcp.com/xsuaa-setup/&#34;&gt;XSUAA roles&lt;/a&gt; still control what the user can do in ARC-1. If &lt;a href=&#34;https://docs.arc-1-mcp.com/principal-propagation-setup/&#34;&gt;Principal Propagation&lt;/a&gt; is active, ARC-1 does not call SAP as one shared technical user. The signed-in user&amp;rsquo;s identity is propagated to the ABAP backend, so SAP checks the request with that user&amp;rsquo;s normal SAP authorizations, for example object, package, transport, table, or &lt;code&gt;S_DEVELOP&lt;/code&gt; permissions.&lt;/p&gt;&#xA;&lt;p&gt;In simpler words: Copilot calls ARC-1 over HTTPS, BTP authenticates the user and resolves the SAP destination, and the Cloud Connector forwards the request to the ABAP system. The server ceiling is the maximum ARC-1 capability the admin enabled for this instance, so a user role can never enable more than the server allows.&lt;/p&gt;&#xA;&lt;p&gt;For Copilot Studio I would be extra conservative with the first setup:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;read/search/diagnose only&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;data preview only for selected users&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;free SQL only for selected users&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;writes disabled by default&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;transport writes disabled&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A Copilot Studio agent can be much more accessible to non-developers than an IDE tool, so the safety model matters even more.&lt;/p&gt;&#xA;&lt;h2 id=&#34;setup&#34;&gt;Setup&lt;/h2&gt;&#xA;&lt;p&gt;I would keep the setup simple and reuse the BTP deployment from the previous post:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Deploy ARC-1 on BTP with &lt;a href=&#34;https://docs.arc-1-mcp.com/xsuaa-setup/&#34;&gt;XSUAA&lt;/a&gt;, &lt;a href=&#34;https://docs.arc-1-mcp.com/btp-destination-setup/&#34;&gt;BTP destinations&lt;/a&gt;, and ideally &lt;a href=&#34;https://docs.arc-1-mcp.com/principal-propagation-setup/&#34;&gt;Principal Propagation&lt;/a&gt;. The detailed steps are in the &lt;a href=&#34;https://docs.arc-1-mcp.com/phase4-btp-deployment/&#34;&gt;BTP deployment guide&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Keep ARC-1 read-only first, or at least very restricted with &lt;a href=&#34;https://docs.arc-1-mcp.com/authorization/&#34;&gt;ARC-1 authorization and roles&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;In Copilot Studio, add ARC-1 as an &lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-copilot-studio/mcp-add-existing-server-to-agent&#34;&gt;existing MCP server&lt;/a&gt; with the public HTTPS endpoint from BTP, for example &lt;code&gt;https://arc1-ecc-dev.cfapps.eu10.hana.ondemand.com/mcp&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Use OAuth 2.0 for the MCP server authentication. Copilot Studio supports manual OAuth configuration for MCP servers, and ARC-1 on BTP can use XSUAA for that.&lt;/li&gt;&#xA;&lt;li&gt;Add &lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-copilot-studio/knowledge-add-sharepoint&#34;&gt;SharePoint as a knowledge source&lt;/a&gt;, add the &lt;a href=&#34;https://mcp-sap-docs.marianzeis.de/&#34;&gt;SAP documentation MCP server&lt;/a&gt; with its public MCP endpoint &lt;code&gt;https://mcp-sap-docs.marianzeis.de/mcp&lt;/code&gt;, and then add other enterprise sources only where they make sense.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-copilot-studio/publication-add-bot-to-microsoft-teams&#34;&gt;Publish the agent to Teams or Microsoft 365 Copilot&lt;/a&gt; after testing.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-copilot-studio/mcp-add-existing-server-to-agent&#34;&gt;existing MCP server page&lt;/a&gt; also documents Streamable transport and the API key or OAuth 2.0 authentication options. For SAP system access I would not start with API keys unless it is a very controlled automation scenario, because OAuth gives a better identity story.&lt;/p&gt;&#xA;&lt;p&gt;In my test agent I used ARC-1 on BTP, a Jira MCP server, and SAP Docs as tools. For knowledge, I added SharePoint locations for specifications and IT documents, plus a Jira connector. For this showcase I enabled the available read and write tools.&lt;/p&gt;&#xA;&lt;p&gt;Microsoft&amp;rsquo;s own &lt;a href=&#34;https://learn.microsoft.com/en-us/graph/mcp-server/use-enterprise-mcp-server-copilot-studio&#34;&gt;MCP Server for Enterprise&lt;/a&gt; points in a similar direction for Microsoft Graph: enterprise context should come through governed endpoints, not random local scripts.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Copilot Studio SAP Agent tools screen showing ARC-1 BTP, Jira MCP Server, and SAP Docs as MCP tools.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-05-05-arc-1-copilot-studio/copilotstudio-tools.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Copilot Studio SAP Agent knowledge screen showing SharePoint knowledge sources and a Jira connector.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-05-05-arc-1-copilot-studio/sapcopilot-knowledge.png&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;sharepoint-and-sap-documentation&#34;&gt;SharePoint And SAP Documentation&lt;/h2&gt;&#xA;&lt;p&gt;The most natural non-developer setup is probably SharePoint plus SAP docs plus SAP system context. SharePoint is where many specifications and project documents already live, and Copilot Studio can use &lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-copilot-studio/knowledge-add-sharepoint&#34;&gt;SharePoint as a knowledge source&lt;/a&gt; while Microsoft authentication keeps the normal document permissions in place.&lt;/p&gt;&#xA;&lt;p&gt;But SharePoint alone is not enough. A specification can say what should happen, but it often does not know how the SAP system actually works today. This is where ARC-1 comes in. The agent can ask ARC-1 for current ABAP objects, CDS views, table structures, message texts, service bindings, transaction metadata, or selected table data, depending on what is enabled and authorized in the &lt;a href=&#34;https://docs.arc-1-mcp.com/authorization/&#34;&gt;ARC-1 tool and role model&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Then I would add the separately deployed &lt;a href=&#34;https://mcp-sap-docs.marianzeis.de/&#34;&gt;mcp-sap-docs&lt;/a&gt; server as the documentation layer, using the public MCP endpoint &lt;code&gt;https://mcp-sap-docs.marianzeis.de/mcp&lt;/code&gt;. It can search SAP documentation, ABAP keyword docs, RAP samples, style guides, DSAG guidelines, SAP Community, and also released object information. That gives the agent a much better chance to not only say &amp;ldquo;this is possible&amp;rdquo;, but also explain what SAP recommends and where the current system differs.&lt;/p&gt;&#xA;&lt;p&gt;This combination is more useful than any single source alone:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SharePoint = what the project wants&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jira = what needs to be solved&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mcp-sap-docs = what SAP recommends&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ARC-1 = what the SAP system actually does&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Of these four, ARC-1 is the only one that can read or write actual ABAP in actual SAP. Everything else is orchestration around it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-real-use-cases-i-tested&#34;&gt;The Real Use Cases I Tested&lt;/h2&gt;&#xA;&lt;p&gt;I created a few small demo scenarios and tested them in Copilot Studio with ARC-1. The screenshots below are from those conversations.&lt;/p&gt;&#xA;&lt;h2 id=&#34;use-case-1-bug-fix-from-a-jira-ticket&#34;&gt;Use Case 1: Bug Fix From A Jira Ticket&lt;/h2&gt;&#xA;&lt;p&gt;The first scenario is still a developer scenario, but it shows the complete loop very well. The Jira ticket &lt;code&gt;KAN-2&lt;/code&gt; only says that a customer with exactly EUR 1,000,000.00 revenue gets the wrong discount tier. Copilot reads the ticket, searches the SAP system, reads &lt;code&gt;ZARC1_DEMO_DISCOUNT&lt;/code&gt;, compares the implementation with the header comment specification, and proposes the one character patch.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Look at KAN-2, propose a patch, but don&amp;#39;t apply it yet.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The important part for me is the confirmation step. The agent does not immediately write to SAP. It first shows the root cause and the diff. Only after the follow-up prompt it updates and activates the report.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Jira ticket KAN-2 describing the wrong discount tier for exactly EUR 1,000,000.00 revenue.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-05-05-arc-1-copilot-studio/conversations/01/jira-ticket.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Copilot Studio proposing a patch for Jira ticket KAN-2 after reading the ABAP report ZARC1_DEMO_DISCOUNT.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-05-05-arc-1-copilot-studio/conversations/01/patch-proposal.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Copilot Studio confirming that the patch for ZARC1_DEMO_DISCOUNT was applied and activated.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-05-05-arc-1-copilot-studio/conversations/01/patch-applied.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;full-answer-viewer.html?case=Use%20Case%201&amp;amp;title=Bug%20fix%20from%20a%20Jira%20ticket&amp;amp;answer=conversations/01/full-answer.txt&#34;&gt;Open the formatted full answer&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This captured run shows both steps: first the patch proposal, then the explicit follow-up to apply and activate it. In a safer setup, the first step alone can already be enough. The developer can copy the suggested diff, review it, test it manually, and keep ARC-1 read-only for that scenario.&lt;/p&gt;&#xA;&lt;h2 id=&#34;use-case-2-sharepoint-change-request-to-impact-analysis&#34;&gt;Use Case 2: SharePoint Change Request To Impact Analysis&lt;/h2&gt;&#xA;&lt;p&gt;The second use case is more interesting for architects. A short SharePoint memo asks to widen &lt;code&gt;ZARC1_DEMO_AMOUNT_DOM&lt;/code&gt; from &lt;code&gt;CURR 13,2&lt;/code&gt; to &lt;code&gt;CURR 23,2&lt;/code&gt;. Copilot reads the memo and then uses ARC-1 to walk the dependency chain in SAP.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Read the change request in IT/Clean Core/ and tell me what would break.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The answer is not just &amp;ldquo;yes, change the domain&amp;rdquo;. It lists the dependency chain from domain to data element to table to report, then explains the risks: activation order, possible table lock, output length, and the hardcoded report layout.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Copilot Studio showing an impact analysis for a SharePoint change request to widen an ABAP amount domain.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-05-05-arc-1-copilot-studio/conversations/02/impact-analysis.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;full-answer-viewer.html?case=Use%20Case%202&amp;amp;title=SharePoint%20change%20request%20impact%20analysis&amp;amp;answer=conversations/02/full-answer.txt&#34;&gt;Open the formatted full answer&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is where a solution architect or functional consultant benefits from SAP system context without needing an IDE. It turns a business change request into a better technical discussion.&lt;/p&gt;&#xA;&lt;h2 id=&#34;use-case-3-build-a-cds-view-from-a-sharepoint-specification&#34;&gt;Use Case 3: Build A CDS View From A SharePoint Specification&lt;/h2&gt;&#xA;&lt;p&gt;The third use case combines SharePoint, SAP documentation, and ARC-1. The input is a small SharePoint specification for a sales order KPI CDS view. Copilot reads the spec, uses &lt;a href=&#34;https://mcp-sap-docs.marianzeis.de/&#34;&gt;mcp-sap-docs&lt;/a&gt; for SAP documentation and CDS conventions, reads the source table from SAP, and then creates and activates the views.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Build the CDS view from IT/Specifications/spec-orders-kpi.md.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;What I liked in this example is that the agent had to adapt to the system. The first simple idea did not work because the system did not allow arithmetic expressions directly inside aggregate functions. The final result was a two-layer CDS design: a base view for line revenue and a KPI view for aggregation.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Copilot Studio explaining that it created and activated a two-layer CDS view design from a SharePoint specification.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-05-05-arc-1-copilot-studio/conversations/03/cds-view-built.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;full-answer-viewer.html?case=Use%20Case%203&amp;amp;title=CDS%20view%20from%20a%20SharePoint%20specification&amp;amp;answer=conversations/03/full-answer.txt&#34;&gt;Open the formatted full answer&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is where Copilot Studio becomes more than a chatbot over documents: SharePoint for the requirement, mcp-sap-docs for the SAP pattern, and ARC-1 for the real table and activation.&lt;/p&gt;&#xA;&lt;h2 id=&#34;use-case-4-code-quality-report&#34;&gt;Use Case 4: Code Quality Report&lt;/h2&gt;&#xA;&lt;p&gt;The fourth scenario is reporting only. The prompt asks Copilot to audit the &lt;code&gt;$TMP&lt;/code&gt; &lt;code&gt;ZARC1_DEMO_*&lt;/code&gt; ABAP programs and post a quality report. The captured answer shows the generated Markdown report, not the SharePoint write-back step.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Audit our $TMP ZARC1_DEMO_* ABAP programs and post a quality report.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Copilot searches the SAP system, reads the programs, runs both SAP ATC checks and abaplint, and produces a per-program report with the two findings axes scored against an overall Risk column. It also catches things pure linting would not flag on its own: SQL injection in the dump-trigger report, full-table scans in the invoice list, and table-buffer bypass on &lt;code&gt;USR02&lt;/code&gt;. The same output could then be written to SharePoint, Word, or another document store depending on the connectors and permissions.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Copilot Studio showing an ABAP code quality audit report for ZARC1_DEMO programs.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-05-05-arc-1-copilot-studio/conversations/04/code-quality-report.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;full-answer-viewer.html?case=Use%20Case%204&amp;amp;title=ABAP%20code%20quality%20report&amp;amp;answer=conversations/04/full-answer.txt&#34;&gt;Open the formatted full answer&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is not mainly a coding example. It gives an architect, technical lead, or quality manager a faster first view: which programs are risky, which findings are only style, and which ones would block a promotion.&lt;/p&gt;&#xA;&lt;h2 id=&#34;use-case-5-short-dump-diagnosis-from-a-jira-ticket&#34;&gt;Use Case 5: Short Dump Diagnosis From A Jira Ticket&lt;/h2&gt;&#xA;&lt;p&gt;The fifth example starts from an intentionally weak Jira ticket. It only says that &lt;code&gt;ZARC1_DEMO_DUMP_RPT&lt;/code&gt; short dumped overnight and that ST22 has the dump. This is close to how many real support tickets start.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Investigate KAN-3 and apply a defensive fix.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Copilot reads the Jira ticket, uses ARC-1 to read short dumps, identifies &lt;code&gt;DBSQL_SQL_ERROR&lt;/code&gt;, reads the report, explains the root cause, and applies a defensive fix. In this demo it adds validation before a dynamic &lt;code&gt;SELECT FROM (p_table)&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Jira ticket KAN-3 with a short description that the ABAP report ZARC1_DEMO_DUMP_RPT short dumped overnight.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-05-05-arc-1-copilot-studio/conversations/05/jira-dump-ticket.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Copilot Studio showing ST22 short dump analysis and the defensive fix for ZARC1_DEMO_DUMP_RPT.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-05-05-arc-1-copilot-studio/conversations/05/short-dump-fix.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;full-answer-viewer.html?case=Use%20Case%205&amp;amp;title=Short%20dump%20diagnosis%20from%20Jira&amp;amp;answer=conversations/05/full-answer.txt&#34;&gt;Open the formatted full answer&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;In bug fixing, the analysis is often the biggest part. If the agent can collect the ticket, dump, source code, and related objects, then the developer starts much further ahead.&lt;/p&gt;&#xA;&lt;h2 id=&#34;use-case-6-clean-core-readiness-check&#34;&gt;Use Case 6: Clean Core Readiness Check&lt;/h2&gt;&#xA;&lt;p&gt;The last scenario is about clean core readiness. The prompt is simple:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Is ZCL_ARC1_DEMO_CCORE clean-core ready?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Copilot reads the class through ARC-1 and finds direct selects on &lt;code&gt;USR02&lt;/code&gt; and &lt;code&gt;BUT000&lt;/code&gt;. Then it uses two different context sources for the assessment. ARC-1&amp;rsquo;s &lt;code&gt;API_STATE&lt;/code&gt; read capability asks the SAP system for release state and successor information. The SAP documentation source adds the official guidance around clean core, released APIs, ABAP Cloud readiness, and why direct table access to internal SAP tables is problematic. When SAP documentation returned no entry at all for &lt;code&gt;USR02&lt;/code&gt;, the agent treated that as &amp;ldquo;strictly internal, find a released alternative&amp;rdquo; rather than &amp;ldquo;unknown, assume fine&amp;rdquo;, and inferred the right successor anyway. Based on that combined context, Copilot proposes released successor APIs like &lt;code&gt;I_BUSINESSUSERBASIC&lt;/code&gt; and &lt;code&gt;I_BUSINESSPARTNER&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Copilot Studio showing a clean core readiness analysis for class ZCL_ARC1_DEMO_CCORE.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-05-05-arc-1-copilot-studio/conversations/06/clean-core-readiness.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;full-answer-viewer.html?case=Use%20Case%206&amp;amp;title=Clean%20core%20readiness%20check&amp;amp;answer=conversations/06/full-answer.txt&#34;&gt;Open the formatted full answer&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;ARC-1 provides the real custom code and the system-specific release state, while SAP documentation provides the official target direction. That makes the result useful for architecture and modernization planning, not only for a developer sitting in an IDE.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-this-matters&#34;&gt;Why This Matters&lt;/h2&gt;&#xA;&lt;p&gt;The important change is not that Copilot Studio can call one more tool. The important change is that a centrally deployed ARC-1 endpoint can make SAP system context available in places where more project roles can use it.&lt;/p&gt;&#xA;&lt;p&gt;Developers still need IDEs, and Copilot Studio does not replace ABAP development tools. But it can become a useful layer for analysis, specification, support, documentation, and architecture work, especially when it combines SAP system context, SAP documentation, SharePoint, Jira, and Microsoft 365 through governed tools and connectors. Without that central architecture, this would again become a local tool story. With BTP, it becomes an enterprise agent story.&lt;/p&gt;&#xA;&lt;h2 id=&#34;discuss-this-post&#34;&gt;Discuss this post&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://saptodon.org/@Mianbsp/116518419049843109&#34;&gt;Saptodon&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://bsky.app/profile/marian.zeis.de/post/3ml2me6teds2q&#34;&gt;Bluesky&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.linkedin.com/posts/marianzeis_what-if-copilot-could-start-from-a-support-activity-7457285481433559041-tvAA&#34;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;references--links&#34;&gt;References &amp;amp; links&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1&#34;&gt;ARC-1 on GitHub&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/&#34;&gt;ARC-1 Documentation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/tools/&#34;&gt;ARC-1 Tools&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/enterprise-auth/&#34;&gt;ARC-1 Authentication Overview&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/phase4-btp-deployment/&#34;&gt;ARC-1 BTP Cloud Foundry Deployment&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/xsuaa-setup/&#34;&gt;ARC-1 XSUAA Setup&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/btp-destination-setup/&#34;&gt;ARC-1 BTP Destination Setup&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/principal-propagation-setup/&#34;&gt;ARC-1 Principal Propagation Setup&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/authorization/&#34;&gt;ARC-1 Authorization and Roles&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/marianfoo/mcp-sap-docs&#34;&gt;mcp-sap-docs&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://help.sap.com/docs/btp/sap-business-technology-platform/abap-development-user-guides&#34;&gt;SAP Help: ABAP Development Tools for Eclipse: User Guides&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-copilot-studio/&#34;&gt;Microsoft Learn: Copilot Studio documentation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-copilot-studio/mcp-add-existing-server-to-agent&#34;&gt;Microsoft Learn: Connect your agent to an existing MCP server&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-copilot-studio/mcp-create-new-server&#34;&gt;Microsoft Learn: Create a new MCP server&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-copilot-studio/knowledge-add-sharepoint&#34;&gt;Microsoft Learn: Add SharePoint as a knowledge source&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-copilot-studio/publication-add-bot-to-microsoft-teams&#34;&gt;Microsoft Learn: Connect and configure an agent for Teams and Microsoft 365 Copilot&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://learn.microsoft.com/en-us/microsoft-365/copilot/connectors/jira-cloud-deployment&#34;&gt;Microsoft Learn: Jira Cloud connector for Microsoft 365 Copilot&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://learn.microsoft.com/en-us/graph/mcp-server/use-enterprise-mcp-server-copilot-studio&#34;&gt;Microsoft Learn: Use Microsoft MCP Server for Enterprise from Copilot Studio&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>ARC-1 on SAP BTP: Secure ABAP Agentic Development Beyond the Laptop</title>
      <link>https://blog.zeis.de/posts/2026-04-29-arc-1-btp/</link>
      <pubDate>Wed, 29 Apr 2026 09:00:00 +0200</pubDate>
      <guid>https://blog.zeis.de/posts/2026-04-29-arc-1-btp/</guid>
      <description>&lt;p&gt;Series note: This post is part of my &lt;a href=&#34;https://blog.zeis.de/tags/ai-abap-development-series/&#34;&gt;AI ABAP development series&lt;/a&gt;, where I go from AI development in general, to ABAP-specific problems, and then to ARC-1.&lt;/p&gt;&#xA;&lt;p&gt;In the &lt;a href=&#34;https://blog.zeis.de/posts/2026-04-27-arc-1/&#34;&gt;previous post&lt;/a&gt;, I introduced &lt;a href=&#34;https://github.com/arc-mcp/arc-1&#34;&gt;ARC-1&lt;/a&gt; as a secure ADT MCP gateway for ABAP systems. The main point was not only that ARC-1 can expose ABAP development functionality to AI clients. The main point was that this access needs a place in the architecture.&lt;/p&gt;&#xA;&lt;p&gt;This post is about that place. If ARC-1 should not run uncontrolled on every developer laptop, then SAP BTP is the most natural enterprise option for me. Not because BTP makes the problem disappear, but because it already has the pieces you need for this kind of setup: XSUAA, destinations, Cloud Connector, role collections, audit logging, and the normal BTP operating model.&lt;/p&gt;&#xA;&lt;p&gt;This is not a full setup guide. The exact commands are in the &lt;a href=&#34;https://docs.arc-1-mcp.com/deployment/&#34;&gt;ARC-1 deployment docs&lt;/a&gt;, the &lt;a href=&#34;https://docs.arc-1-mcp.com/phase4-btp-deployment/&#34;&gt;BTP deployment guide&lt;/a&gt;, and the pages for &lt;a href=&#34;https://docs.arc-1-mcp.com/xsuaa-setup/&#34;&gt;XSUAA&lt;/a&gt;, &lt;a href=&#34;https://docs.arc-1-mcp.com/btp-destination-setup/&#34;&gt;destinations&lt;/a&gt;, and &lt;a href=&#34;https://docs.arc-1-mcp.com/principal-propagation-setup/&#34;&gt;Principal Propagation&lt;/a&gt;. Here I want to explain the architecture options and what I would look at first.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-btp&#34;&gt;Why BTP&lt;/h2&gt;&#xA;&lt;p&gt;The problem with agentic ABAP development is not only context. It is controlled context. The AI needs to read real SAP objects, but the company also needs to know who is authenticated, where credentials live, what the effective permission is, and who can later audit what happened.&lt;/p&gt;&#xA;&lt;p&gt;That is where BTP helps. ARC-1 can run as one central Cloud Foundry application instead of many local MCP servers. The SAP connection can use BTP destinations. On-premise and private cloud systems can be reached through Cloud Connector. Users can authenticate through XSUAA. Role collections can decide who gets read, write, data preview, SQL, transport, git, or admin scopes. If the BTP Audit Log Service is bound, ARC-1 can write audit events into the platform instead of only to a local laptop.&lt;/p&gt;&#xA;&lt;p&gt;For me this is the real difference. A local setup is good for testing and for special cases, but it is not the architecture I would want for a real ABAP team. A central BTP deployment gives you one managed MCP endpoint per SAP system, one place for policy, and no need to store SAP passwords in every developer client.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-basic-shape&#34;&gt;The Basic Shape&lt;/h2&gt;&#xA;&lt;p&gt;The architecture still has the same simple shape:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;MCP client -&amp;gt; ARC-1 -&amp;gt; SAP system&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But on BTP this becomes two authentication hops:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;AI client&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; XSUAA OAuth&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; ARC-1 on SAP BTP Cloud Foundry&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; Destination Service&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; Connectivity Service&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; Cloud Connector&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; SAP ABAP system&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The first hop is the MCP client talking to ARC-1. A client like Claude, Cursor, VS Code, GitHub Copilot for Eclipse, MCP Inspector, or Copilot Studio calls the ARC-1 &lt;code&gt;/mcp&lt;/code&gt; endpoint and authenticates through XSUAA. The second hop is ARC-1 talking to SAP. For that hop, ARC-1 can use a BTP destination with a technical user, a BTP destination with Principal Propagation, or a BTP ABAP Environment service key.&lt;/p&gt;&#xA;&lt;p&gt;For human developer usage, Principal Propagation is the most interesting option. ARC-1 receives the user token, passes it to the Destination Service, and BTP plus Cloud Connector can propagate the user identity to the backend. Then SAP sees the real user instead of one shared technical account. That is important for authorization and for audit.&lt;/p&gt;&#xA;&lt;p&gt;ARC-1 uses a dual-destination pattern for this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SAP_BTP_DESTINATION      = shared BasicAuth destination&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SAP_BTP_PP_DESTINATION   = per-user PrincipalPropagation destination&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SAP_PP_ENABLED           = true&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SAP_XSUAA_AUTH           = true&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The BasicAuth destination is used for startup work like feature probing and cache warmup, because there is no user JWT at startup. The PrincipalPropagation destination is used for authenticated per-user requests. In production I would also look at &lt;code&gt;SAP_PP_STRICT=true&lt;/code&gt;, because then a Principal Propagation problem fails clearly instead of silently falling back to a shared user.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-three-gates&#34;&gt;The Three Gates&lt;/h2&gt;&#xA;&lt;p&gt;The important part is that ARC-1 does not rely on one big switch. A request has to pass three gates:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;The server ceiling: what this ARC-1 instance can ever do, configured with environment variables like &lt;code&gt;SAP_ALLOW_WRITES&lt;/code&gt;, &lt;code&gt;SAP_ALLOW_FREE_SQL&lt;/code&gt;, or &lt;code&gt;SAP_ALLOWED_PACKAGES&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;The user permission: what this user can do inside ARC-1, coming from XSUAA role collections, OIDC scopes, or API-key profiles.&lt;/li&gt;&#xA;&lt;li&gt;The SAP authorization: what the SAP backend user can do, for example through &lt;code&gt;S_DEVELOP&lt;/code&gt;, package authorizations, transport authorizations, or ABAP Cloud restrictions.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;That means the effective permission is an AND model:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Effective permission = server ceiling AND user permission AND SAP authorization&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is why BTP role collections and ARC-1 safety flags are not the same thing. If the server has &lt;code&gt;SAP_ALLOW_WRITES=false&lt;/code&gt;, a user with &lt;code&gt;ARC-1 Developer&lt;/code&gt; still cannot write. If &lt;code&gt;SAP_ALLOW_FREE_SQL=false&lt;/code&gt;, a user with SQL scope still cannot run freestyle SQL. And even if both ARC-1 layers allow the action, SAP can still reject it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;deployment-options&#34;&gt;Deployment Options&lt;/h2&gt;&#xA;&lt;p&gt;The recommended option is the MTA deployment. ARC-1 includes an &lt;code&gt;mta.yaml&lt;/code&gt; with the Cloud Foundry app and the required services: XSUAA, Destination Service, and Connectivity Service. This is the most reproducible setup because the application and service bindings are described together, similar to how SAP describes multitarget applications for Cloud Foundry.&lt;/p&gt;&#xA;&lt;p&gt;The rough commands are:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run btp:build&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run btp:deploy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;or combined:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run btp:build-deploy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Docker on Cloud Foundry is the second option. That can make sense if a company wants to deploy a pinned image from GHCR or an internal registry. You still need the same BTP services, but you manage more yourself with &lt;code&gt;manifest.yml&lt;/code&gt;, &lt;code&gt;cf create-service&lt;/code&gt;, &lt;code&gt;cf bind-service&lt;/code&gt;, and &lt;code&gt;cf set-env&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;A direct Node.js buildpack deployment is also possible, especially if you patch or customize the source and push it directly with &lt;code&gt;cf push&lt;/code&gt;. For a stable team setup, I would start with MTA unless there is a concrete reason not to.&lt;/p&gt;&#xA;&lt;p&gt;BTP ABAP Environment is a separate scenario. There is no Cloud Connector involved. ARC-1 can use a service key and OAuth flow to connect to the ABAP environment. In this case &lt;code&gt;SAP_SYSTEM_TYPE=btp&lt;/code&gt; matters, because ARC-1 adapts tool definitions and avoids on-premise-only object types and assumptions.&lt;/p&gt;&#xA;&lt;h2 id=&#34;configuration-that-matters&#34;&gt;Configuration That Matters&lt;/h2&gt;&#xA;&lt;p&gt;This is not the full reference, but these are the variables I would explain first:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SAP_TRANSPORT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http-streamable&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SAP_XSUAA_AUTH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SAP_BTP_DESTINATION&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;SAP_ECC_DEV&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SAP_BTP_PP_DESTINATION&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;SAP_ECC_DEV_PP&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SAP_PP_ENABLED&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SAP_PP_STRICT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SAP_ALLOW_WRITES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SAP_ALLOW_DATA_PREVIEW&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SAP_ALLOW_FREE_SQL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SAP_ALLOW_TRANSPORT_WRITES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SAP_ALLOW_GIT_WRITES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SAP_ALLOWED_PACKAGES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;$TMP&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The first group makes ARC-1 a remote MCP server with XSUAA authentication. The second group controls the BTP destination setup and Principal Propagation. The third group is the server ceiling, and I would keep it conservative by default.&lt;/p&gt;&#xA;&lt;p&gt;For a development system, you may open selected writes:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cf set-env arc1-ecc-dev SAP_ALLOW_WRITES &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cf set-env arc1-ecc-dev SAP_ALLOW_TRANSPORT_WRITES &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cf set-env arc1-ecc-dev SAP_ALLOWED_PACKAGES &lt;span class=&#34;s1&#34;&gt;&amp;#39;Z*,$TMP&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cf restage arc1-ecc-dev&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For production, I would usually keep ARC-1 read-only:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cf set-env arc1-ecc-prod SAP_ALLOW_WRITES &lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cf set-env arc1-ecc-prod SAP_ALLOW_FREE_SQL &lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cf set-env arc1-ecc-prod SAP_ALLOW_DATA_PREVIEW &lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cf restage arc1-ecc-prod&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The recommended architecture is like the one-instance-per-SAP-system model. A DEV system can allow selected writes, a PROD system can be read-only, and a BTP ABAP system can have its own endpoint and tool behavior. This keeps policies easier to understand than one large multi-backend gateway.&lt;/p&gt;&#xA;&lt;h2 id=&#34;roles-and-technical-users&#34;&gt;Roles And Technical Users&lt;/h2&gt;&#xA;&lt;p&gt;ARC-1 ships XSUAA scopes like &lt;code&gt;read&lt;/code&gt;, &lt;code&gt;write&lt;/code&gt;, &lt;code&gt;data&lt;/code&gt;, &lt;code&gt;sql&lt;/code&gt;, &lt;code&gt;transports&lt;/code&gt;, &lt;code&gt;git&lt;/code&gt;, and &lt;code&gt;admin&lt;/code&gt;. These are grouped into role collections such as &lt;code&gt;ARC-1 Viewer&lt;/code&gt;, &lt;code&gt;ARC-1 Developer&lt;/code&gt;, &lt;code&gt;ARC-1 Developer + Data&lt;/code&gt;, &lt;code&gt;ARC-1 Developer + SQL&lt;/code&gt;, and &lt;code&gt;ARC-1 Admin&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;For human developer usage, I would prefer XSUAA plus Principal Propagation. Then ARC-1 knows the MCP user, and SAP can also see the real SAP user. That gives a much better audit story.&lt;/p&gt;&#xA;&lt;p&gt;But not every use case needs Principal Propagation. For automation, scheduled checks, process agents, or a very controlled BTP Process Automation scenario, a technical user can be fine. The tradeoff just has to be clear: ARC-1 may know which token or client called it, but SAP will see the technical user. With Principal Propagation, SAP sees the real user.&lt;/p&gt;&#xA;&lt;h2 id=&#34;connecting-clients&#34;&gt;Connecting Clients&lt;/h2&gt;&#xA;&lt;p&gt;Once ARC-1 runs centrally, client configuration should become small. Ideally the developer configures only the MCP server URL, not SAP credentials:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;mcpServers&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;arc1-ecc-dev&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://arc1-ecc-dev.cfapps.eu10.hana.ondemand.com/mcp&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Clients with remote MCP and OAuth discovery can follow the XSUAA flow. ARC-1 exposes OAuth metadata and proxies the flow to XSUAA, so this can work for Claude, Cursor, VS Code-style MCP clients, and MCP Inspector.&lt;/p&gt;&#xA;&lt;p&gt;For Eclipse this becomes more concrete with &lt;a href=&#34;https://marketplace.eclipse.org/content/github-copilot&#34;&gt;GitHub Copilot for Eclipse&lt;/a&gt;. Eclipse ADT can stay the normal ABAP development environment, while Copilot can use MCP to call the same central ARC-1 endpoint. GitHub also added MCP OAuth support for Copilot in Eclipse, JetBrains, and Xcode, so this fits the BTP/XSUAA endpoint model much better than a local server on every laptop. ARC-1 still does not replace Eclipse. It gives the AI part a controlled SAP access path.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-i-would-verify-first&#34;&gt;What I Would Verify First&lt;/h2&gt;&#xA;&lt;p&gt;Before I would enable any write access, I would verify the boring things:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl https://arc1-ecc-dev.cfapps.eu10.hana.ondemand.com/health&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl https://arc1-ecc-dev.cfapps.eu10.hana.ondemand.com/.well-known/oauth-authorization-server&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then I would test a read-only MCP call and check the ARC-1 logs. The logs should show which authentication modes are active, for example XSUAA on the MCP side and Principal Propagation on the SAP side.&lt;/p&gt;&#xA;&lt;p&gt;Only after that I would enable writes, and only in steps:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;read-only -&amp;gt; writes to $TMP -&amp;gt; writes to selected packages -&amp;gt; transport writes&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is less exciting than a demo where the AI writes everything immediately, but it is much closer to how I think enterprise ABAP AI development should be introduced.&lt;/p&gt;&#xA;&lt;h2 id=&#34;where-to-go-deeper&#34;&gt;Where To Go Deeper&lt;/h2&gt;&#xA;&lt;p&gt;The architecture is the important part first, but the actual setup has many landscape-specific details.&lt;/p&gt;&#xA;&lt;p&gt;For the concrete steps, I would start with the &lt;a href=&#34;https://docs.arc-1-mcp.com/phase4-btp-deployment/&#34;&gt;BTP Cloud Foundry deployment guide&lt;/a&gt;, then go through &lt;a href=&#34;https://docs.arc-1-mcp.com/xsuaa-setup/&#34;&gt;XSUAA setup&lt;/a&gt;, &lt;a href=&#34;https://docs.arc-1-mcp.com/btp-destination-setup/&#34;&gt;BTP destination setup&lt;/a&gt;, and &lt;a href=&#34;https://docs.arc-1-mcp.com/principal-propagation-setup/&#34;&gt;Principal Propagation setup&lt;/a&gt; depending on the target landscape.&lt;/p&gt;&#xA;&lt;p&gt;For me the main point stays the same: ARC-1 on BTP is not just a nicer place to host a Node.js app. It is where the MCP server can become part of an enterprise SAP development architecture, with central access, controlled permissions, and a real identity story.&lt;/p&gt;&#xA;&lt;h2 id=&#34;discuss-this-post&#34;&gt;Discuss this post&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://saptodon.org/@Mianbsp/116490533476845801&#34;&gt;Saptodon&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://bsky.app/profile/marian.zeis.de/post/3mkoa3dkw5c27&#34;&gt;Bluesky&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.linkedin.com/posts/marianzeis_arc-1-on-btp-is-about-one-simple-shift-agentic-activity-7455473576280817664-6oWh&#34;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;references--links&#34;&gt;References &amp;amp; links&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1&#34;&gt;ARC-1 on GitHub&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/&#34;&gt;ARC-1 Documentation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/deployment/&#34;&gt;ARC-1 Deployment&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/phase4-btp-deployment/&#34;&gt;ARC-1 BTP Cloud Foundry Deployment&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/enterprise-auth/&#34;&gt;ARC-1 Enterprise Authentication&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/xsuaa-setup/&#34;&gt;ARC-1 XSUAA Setup&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/btp-destination-setup/&#34;&gt;ARC-1 BTP Destination Setup&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/principal-propagation-setup/&#34;&gt;ARC-1 Principal Propagation Setup&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/authorization/&#34;&gt;ARC-1 Authorization and Roles&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/btp-abap-environment/&#34;&gt;ARC-1 BTP ABAP Environment Setup&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://help.sap.com/docs/btp/sap-business-technology-platform/multitarget-applications-in-cloud-foundry-environment&#34;&gt;SAP Help: Multitarget Applications in Cloud Foundry&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://help.sap.com/docs/btp/sap-business-technology-platform/what-is-sap-authorization-and-trust-management-service&#34;&gt;SAP Help: Authorization and Trust Management Service&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/authenticating-users-against-on-premise-systems&#34;&gt;SAP Help: Authenticating Users Against On-Premise Systems&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://sap.github.io/cloud-sdk/docs/js/features/connectivity/destinations&#34;&gt;SAP Cloud SDK: Destinations&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://marketplace.eclipse.org/content/github-copilot&#34;&gt;GitHub Copilot for Eclipse&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.blog/changelog/2025-11-18-enhanced-mcp-oauth-support-for-github-copilot-in-jetbrains-eclipse-and-xcode&#34;&gt;GitHub Changelog: Enhanced MCP OAuth support for Copilot in Eclipse, JetBrains, and Xcode&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>Introducing ARC-1: A Secure ADT MCP Server for Enterprise SAP Development</title>
      <link>https://blog.zeis.de/posts/2026-04-27-arc-1/</link>
      <pubDate>Mon, 27 Apr 2026 09:00:00 +0200</pubDate>
      <guid>https://blog.zeis.de/posts/2026-04-27-arc-1/</guid>
      <description>&lt;p&gt;Series note: This post is part of my &lt;a href=&#34;https://blog.zeis.de/tags/ai-abap-development-series/&#34;&gt;AI ABAP development series&lt;/a&gt;, where I go from AI development in general, to ABAP-specific problems, and then to ARC-1.&lt;/p&gt;&#xA;&lt;p&gt;In the &lt;a href=&#34;https://blog.zeis.de/posts/2026-04-20-how-i-use-ai/&#34;&gt;first post of this series&lt;/a&gt;, I wrote about context and how I use AI in development. In the &lt;a href=&#34;https://blog.zeis.de/posts/2026-04-22-ai-abap-development/&#34;&gt;previous post&lt;/a&gt;, I then moved that discussion into ABAP and ended more or less with one question: what would an ADT MCP setup need to look like if you take control, identity, and security seriously from the beginning?&lt;/p&gt;&#xA;&lt;p&gt;This post is my current answer to that question. It is called &lt;a href=&#34;https://github.com/arc-mcp/arc-1&#34;&gt;ARC-1&lt;/a&gt; (ABAP Relay Connector, pronounced arc one [ɑːrk wʌn]), and yes, it is another ADT MCP server. But the important difference is not that it can talk to ADT at all. Other projects already showed very well that this is possible and useful. The difference is the architecture and the focus, which is also why the &lt;a href=&#34;https://docs.arc-1-mcp.com/&#34;&gt;ARC-1 documentation&lt;/a&gt; spends a lot of space on security, authentication, deployment, and operations, not only on the tool list.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-arc-1-had-to-exist&#34;&gt;Why ARC-1 had to exist&lt;/h2&gt;&#xA;&lt;p&gt;Luckily, the community already did a lot of the hard work before ARC-1. &lt;a href=&#34;https://github.com/marcellourbani/abap-adt-api&#34;&gt;Marcello Urbani&amp;rsquo;s abap-adt-api&lt;/a&gt; gave many TypeScript projects the foundation to work with ADT APIs at all, which are still not really documented in a useful way. Projects like &lt;a href=&#34;https://github.com/oisee/vibing-steampunk&#34;&gt;oisee/vibing-steampunk&lt;/a&gt;, &lt;a href=&#34;https://github.com/fr0ster/mcp-abap-adt&#34;&gt;fr0ster/mcp-abap-adt&lt;/a&gt;, and &lt;a href=&#34;https://github.com/DassianInc/dassian-adt&#34;&gt;DassianInc/dassian-adt&lt;/a&gt; already proved that MCP and ABAP development can work in practice and can be very useful. And &lt;a href=&#34;https://github.com/lemaiwo/btp-sap-odata-to-mcp-server&#34;&gt;Wouter Lemaire&amp;rsquo;s btp-sap-odata-to-mcp-server&lt;/a&gt; was also important for me, because it already showed a BTP-deployed and centrally managed direction much earlier, and Wouter also helped me during the ARC-1 implementation.&lt;/p&gt;&#xA;&lt;p&gt;So ARC-1 is not me claiming that nobody solved this before. For me it is more this: the others already proved the technical possibility, and ARC-1 is my attempt to close the enterprise gap. That gap is the same one I described in the last post. In ABAP, the hard part is not only getting context into the model. It is that context access, write access, and control are tied very closely together in a real SAP landscape.&lt;/p&gt;&#xA;&lt;p&gt;That is why I did not want to build just another local developer tool that happens to speak MCP. I wanted to build a secure ADT MCP server with a clearer security concept, more central control, and an architecture that fits better into enterprise SAP environments.&lt;/p&gt;&#xA;&lt;h2 id=&#34;central-instead-of-local&#34;&gt;Central instead of local&lt;/h2&gt;&#xA;&lt;p&gt;For me this is probably the biggest architectural difference. Most current MCP ADT setups are still mainly local. The server runs on the developer laptop, gets configured there, stores credentials there, and then talks directly to the SAP system from there.&lt;/p&gt;&#xA;&lt;p&gt;That is fine for trying things out. It is also fine for fast experimentation. And to be clear, ARC-1 can also run locally. That is useful for tests, local development, and simply trying the server out. But local developer setup is not the main story I care about here. The main story is central deployment.&lt;/p&gt;&#xA;&lt;p&gt;That means one managed ARC-1 instance per SAP system, with central configuration, central security settings, central logging, and a clear operational owner. That can run on a company server, in Docker, or ideally on SAP BTP Cloud Foundry. The &lt;a href=&#34;https://docs.arc-1-mcp.com/architecture/&#34;&gt;architecture documentation&lt;/a&gt; goes into the technical flow in more detail, but I will go much deeper into the BTP side in the next post, because that deserves its own post.&lt;/p&gt;&#xA;&lt;p&gt;For me BTP is especially interesting here because it lets you reuse things that already exist in many companies anyway: XSUAA, destinations, Cloud Connector, audit services, role assignment, and the usual BTP login flow. Then the developer mostly just needs the MCP URL and the standard login, while admins and authorization teams keep control in the place where they already work.&lt;/p&gt;&#xA;&lt;p&gt;I also do not think this is only an SAP-specific thought. Salesforce is already moving in a similar direction with &lt;a href=&#34;https://developer.salesforce.com/docs/platform/hosted-mcp-servers/guide/hosted-mcp-servers-overview.html&#34;&gt;hosted MCP servers&lt;/a&gt; and &lt;a href=&#34;https://www.salesforce.com/news/stories/salesforce-headless-360-announcement/&#34;&gt;Headless 360&lt;/a&gt;, where more of the platform is exposed as APIs, MCP tools, or CLI commands. To me that confirms that enterprise MCP is a platform and governance topic, not only a developer convenience topic.&lt;/p&gt;&#xA;&lt;p&gt;The reason this matters is simple. If the MCP server sits only on the laptop of an individual developer, then the architecture is also controlled there. That is exactly the part I do not find convincing for enterprise usage.&lt;/p&gt;&#xA;&lt;h2 id=&#34;two-auth-hops-matter&#34;&gt;Two auth hops matter&lt;/h2&gt;&#xA;&lt;p&gt;One thing that became very clear while building ARC-1 is that there are really two completely different authentication questions. The first one is who is allowed to talk to the MCP server at all. The second one is as which user the MCP server talks to the SAP system.&lt;/p&gt;&#xA;&lt;p&gt;That sounds obvious, but many discussions around MCP servers blur those two things together. In ARC-1, these are treated as two separate hops: &lt;code&gt;MCP client -&amp;gt; ARC-1&lt;/code&gt; and &lt;code&gt;ARC-1 -&amp;gt; SAP&lt;/code&gt;. This matters because the architecture becomes much clearer after that.&lt;/p&gt;&#xA;&lt;p&gt;For the first hop, ARC-1 can use things like API keys, OIDC/JWT, or &lt;a href=&#34;https://docs.arc-1-mcp.com/enterprise-auth/&#34;&gt;XSUAA OAuth&lt;/a&gt;, depending on how and where it is deployed. For the second hop, ARC-1 can talk to SAP with Basic Auth, BTP service keys, or with &lt;a href=&#34;https://docs.arc-1-mcp.com/principal-propagation-setup/&#34;&gt;Principal Propagation&lt;/a&gt;, depending on the target landscape.&lt;/p&gt;&#xA;&lt;p&gt;That split is very important for enterprise usage, because it lets you separate client access control from SAP identity handling instead of hiding both behind one local config file. It also makes it easier to support different use cases. If ARC-1 is used more like a backend connector for an automation, an API key may be totally fine. If real per-user identity matters, then OAuth or XSUAA plus Principal Propagation is the much more interesting setup.&lt;/p&gt;&#xA;&lt;h2 id=&#34;safe-by-default-not-allow-all-by-default&#34;&gt;Safe by default, not allow all by default&lt;/h2&gt;&#xA;&lt;p&gt;The next big difference is that ARC-1 starts from the assumption that the default should be restrictive. Out of the box ARC-1 is read-only. It blocks free SQL. It blocks named table preview. Transport reads such as list, get, check, and history remain available, but transport mutations require both writes and transport writes to be explicitly enabled. And even if writing is enabled, writes are still restricted to &lt;code&gt;$TMP&lt;/code&gt; unless packages are explicitly allowed.&lt;/p&gt;&#xA;&lt;p&gt;That last point is important to me. Yes, it makes the first setup a bit less magical. Sometimes you need to configure one more thing. But I prefer that over accidentally giving an AI assistant full write access to transportable packages because one flag was too broad.&lt;/p&gt;&#xA;&lt;p&gt;ARC-1 also has an action deny list, package restrictions, and safety profiles including &lt;code&gt;viewer&lt;/code&gt;, &lt;code&gt;viewer-data&lt;/code&gt;, &lt;code&gt;viewer-sql&lt;/code&gt;, &lt;code&gt;developer&lt;/code&gt;, &lt;code&gt;developer-data&lt;/code&gt;, &lt;code&gt;developer-sql&lt;/code&gt;, and &lt;code&gt;admin&lt;/code&gt;. So there is not only one on or off switch. For SAP development that feels much more realistic to me than a server that starts by allowing everything and then hopes people will restrict it later.&lt;/p&gt;&#xA;&lt;h2 id=&#34;layered-security-not-just-one-switch&#34;&gt;Layered security, not just one switch&lt;/h2&gt;&#xA;&lt;p&gt;This also leads to the next point. For me, security here is not one boolean setting. It is several layers on top of each other.&lt;/p&gt;&#xA;&lt;p&gt;At the ARC-1 level there is the server safety configuration itself: read-only mode, blocked SQL, package restrictions, the action deny list, and transport gates. Then there is the identity and role layer on top, for example via OIDC or XSUAA scopes and roles. And then there is still the SAP system itself with its own authorization objects and checks.&lt;/p&gt;&#xA;&lt;p&gt;That means all of these layers have to allow something before it actually happens. If ARC-1 is configured read-only, then even a user with a more powerful role still cannot write. If a user has write scope in ARC-1, but the SAP backend authorization is missing, the write still fails.&lt;/p&gt;&#xA;&lt;p&gt;That is exactly how I want it. ARC-1 should not replace SAP authorization. It should add another control layer in front of it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;per-user-identity-matters&#34;&gt;Per-user identity matters&lt;/h2&gt;&#xA;&lt;p&gt;This becomes even more interesting once you look at per-user identity. One of the things I wanted very early is that ARC-1 should not force everything through one shared technical SAP user if that can be avoided.&lt;/p&gt;&#xA;&lt;p&gt;That is why &lt;a href=&#34;https://docs.arc-1-mcp.com/principal-propagation-setup/&#34;&gt;Principal Propagation&lt;/a&gt; is such an important part of the architecture for me. If Principal Propagation is active, the MCP user identity can flow through ARC-1 and into SAP, so that the action runs with the real SAP user and the real SAP authorization of that person. I already tested this and it works.&lt;/p&gt;&#xA;&lt;p&gt;That is important not only because it is cleaner technically. It is important because it fits much better into audit, compliance, and real enterprise authorization models. I do not want the whole architecture to end in &amp;ldquo;trust this one service account and hope nobody asks too many questions later&amp;rdquo;. I want the system to be able to say who actually did what.&lt;/p&gt;&#xA;&lt;h2 id=&#34;audit-logging-is-part-of-the-feature-not-an-afterthought&#34;&gt;Audit logging is part of the feature, not an afterthought&lt;/h2&gt;&#xA;&lt;p&gt;The same applies to audit logging. If AI is allowed to read from or write to a real SAP system, then logging is not some optional extra feature. It is part of the basic architecture.&lt;/p&gt;&#xA;&lt;p&gt;ARC-1 emits structured audit events and can integrate with the &lt;a href=&#34;https://docs.arc-1-mcp.com/security-guide/&#34;&gt;BTP Audit Log Service&lt;/a&gt;. That means you can log who called which tool, what happened, and in which request context it happened. Especially on BTP, that gives you a much better compliance story than a local MCP server that mostly lives on one laptop.&lt;/p&gt;&#xA;&lt;p&gt;For normal hobby tooling this might feel like overkill. For SAP it does not. Especially if the recommended target architecture is BTP, it makes sense to also use the established platform services for logging and identity instead of building a parallel side world around them.&lt;/p&gt;&#xA;&lt;h2 id=&#34;not-locked-into-one-client&#34;&gt;Not locked into one client&lt;/h2&gt;&#xA;&lt;p&gt;This point is also important to me personally. There are already many useful prompt files, local plugins, slash commands, and client-specific workflows around SAP and ABAP. I do not think that is wrong. A lot of that work is useful and practical.&lt;/p&gt;&#xA;&lt;p&gt;But that is still a different architecture. Very often the logic, the access, and the credentials live mainly on one laptop and inside one AI client. For enterprise usage I want the opposite.&lt;/p&gt;&#xA;&lt;p&gt;I want one secure ADT MCP server that can be used from many clients. That can be Claude, &lt;a href=&#34;https://github.com/features/copilot&#34;&gt;GitHub Copilot&lt;/a&gt;, Copilot Studio, IDEs, or later other MCP clients that also support OAuth. In the best case, that can then be combined with Principal Propagation instead of local SAP credentials.&lt;/p&gt;&#xA;&lt;p&gt;That flexibility matters, because in many companies the default AI developer tooling will not be Claude Code. It will more likely be GitHub Copilot or other centrally managed tools. And I do not want the SAP side of the architecture to depend on one specific AI client. MCP is useful exactly because it decouples those things.&lt;/p&gt;&#xA;&lt;h2 id=&#34;testing-matters-more-here-than-for-normal-dev-tooling&#34;&gt;Testing matters more here than for normal dev tooling&lt;/h2&gt;&#xA;&lt;p&gt;I also want to stress the testing part, because for a project like this it matters a lot.&lt;/p&gt;&#xA;&lt;p&gt;If an MCP server only works in one perfect demo system, then that is not enough. SAP systems are messy. Different releases behave differently. Different endpoints exist or do not exist. BTP ABAP is different again. And error handling around ADT is not always beautiful.&lt;/p&gt;&#xA;&lt;p&gt;That is why ARC-1 puts a lot of effort into testing. Right now the project has &lt;a href=&#34;https://github.com/arc-mcp/arc-1#testing&#34;&gt;3,474 unit tests, a 262-test default integration profile, and a 141-test default E2E profile&lt;/a&gt;. The integration and E2E profiles test against live SAP systems, and the E2E tests execute real MCP tool calls against a running ARC-1 server. As a freelancer I obviously do not have access to every possible enterprise landscape, but I do test against real systems. I test against BTP ABAP, the ABAP trial system in Docker, and the older 7.50 trial system.&lt;/p&gt;&#xA;&lt;p&gt;I also do not test only with one ideal model and one toy example. I try it myself with stronger and weaker models and with workflows that are much closer to reality. That includes things like clean core analysis or creating a full RAP project from nothing, not even a table, up to an activated RAP project you can actually use. A lot of the workflows and feature ideas behind that are also visible in the &lt;a href=&#34;https://github.com/arc-mcp/arc-1/blob/main/skills/README.md&#34;&gt;ARC-1 skills catalog&lt;/a&gt;, because those are more or less the kinds of use cases I want to make work reliably.&lt;/p&gt;&#xA;&lt;p&gt;For me that is also one of the big lessons from working with SAP tooling in general: if you do not test against real systems, you often only test your assumptions.&lt;/p&gt;&#xA;&lt;h2 id=&#34;so-yes-this-is-another-adt-mcp-server&#34;&gt;So yes, this is another ADT MCP server&lt;/h2&gt;&#xA;&lt;p&gt;And that is fine. I do not think ARC-1 needs to exist because every other project is wrong. Quite the opposite. The other projects created the category, pushed the ecosystem forward, and showed there is real interest.&lt;/p&gt;&#xA;&lt;p&gt;At the same time I think ARC-1 is different enough in architecture and focus that it makes sense right now. It is especially different from the angle of secure defaults, central deployment, layered security, per-user identity, and auditability.&lt;/p&gt;&#xA;&lt;p&gt;And yes, it now also differentiates itself from SAP&amp;rsquo;s official approach. SAP first announced the server in its &lt;a href=&#34;https://community.sap.com/t5/technology-blog-posts-by-sap/introducing-the-next-era-of-abap-development/ba-p/14260522&#34;&gt;November 4, 2025 post about the next era of ABAP development&lt;/a&gt;. Since then, SAP has &lt;a href=&#34;https://community.sap.com/t5/technology-blog-posts-by-sap/abap-ai-chapter-3-we-go-agentic/ba-p/14391469&#34;&gt;made the official ABAP MCP server available in both Eclipse and VS Code&lt;/a&gt;. I think that is good news.&lt;/p&gt;&#xA;&lt;p&gt;The current difference is architectural. SAP&amp;rsquo;s &lt;a href=&#34;https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/configuring-adt-mcp-server-ed94320814734d97801f51a5b6deb802&#34;&gt;configuration guide&lt;/a&gt; describes the ADT MCP server as a local HTTP server hosted by the IDE and protected with a generated bearer token. ARC-1 can also run locally, but the main direction described in this post remains central deployment, BTP integration, enterprise authentication, per-user backend identity, roles, and audit logging.&lt;/p&gt;&#xA;&lt;p&gt;SAP also says that a possible standalone shipment of the ABAP Language Server and MCP Server is still under discussion. If reusable standalone components become available, ARC-1 should evaluate using that foundation instead of reimplementing more and more HTTP details on the community side. For now, the official local server and a centrally deployed ARC-1 instance are two existing approaches with different deployment and governance models.&lt;/p&gt;&#xA;&lt;p&gt;The point is not that my server must win. The point is that different architectures serve different needs, and competition is usually good. It helps people choose, it helps ideas spread, and it gives both SAP and community projects feedback from real use. People can decide whether the official local ADT MCP server, a centrally deployed ARC-1 setup, or both fit their landscape.&lt;/p&gt;&#xA;&lt;h2 id=&#34;a-note-on-adt-apis-and-saps-new-api-policy&#34;&gt;A note on ADT APIs and SAP&amp;rsquo;s new API policy&lt;/h2&gt;&#xA;&lt;p&gt;There is one more point worth separating from the architecture discussion. SAP published a new API policy in April 2026. The &lt;a href=&#34;https://help.sap.com/doc/sap-api-policy/latest/en-US/API_Policy_latest.pdf&#34;&gt;current SAP API Policy is version 4.2026a&lt;/a&gt;. It permits published APIs for their documented use, but says non-published APIs must not be used unless documentation or SAP authorization permits it. It also explicitly restricts API use with generative AI systems that plan, select, or execute sequences of calls outside SAP-endorsed architectures and documented limits. That makes this more than a theoretical support question for SAP customers, partners, and community tools that build on top of SAP development APIs.&lt;/p&gt;&#xA;&lt;p&gt;For ADT, the publicly available material points to a more nuanced situation. SAP provides an official ADT SDK with JavaDoc, and the ADT download page describes it as a public API to implement or integrate your own tools with SAP&amp;rsquo;s ABAP IDE. There is also an SAP document about creating and consuming RESTful APIs in ADT. This does not imply that every internal &lt;code&gt;/sap/bc/adt&lt;/code&gt; endpoint is covered by the same support boundary, but it does show that parts of the ADT tooling and communication model are documented and intended for integration scenarios.&lt;/p&gt;&#xA;&lt;p&gt;Since then, SAP has shipped the ABAP Language Server and MCP Server as parts of Eclipse and VS Code, while a standalone shipment remains under discussion. That does not by itself define the support boundary for every endpoint used by third-party tools. ARC-1&amp;rsquo;s position is therefore deliberately cautious: stay close to documented and discoverable ADT behavior, keep data preview and free SQL off by default, review the SAP policy and the customer&amp;rsquo;s SAP agreement, and ask SAP before production use. The &lt;a href=&#34;https://docs.arc-1-mcp.com/sap-api-policy-and-architecture/&#34;&gt;ARC-1 API Policy and Architecture Alignment&lt;/a&gt; page covers that position in more detail.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-this-matters-for-the-next-post&#34;&gt;Why this matters for the next post&lt;/h2&gt;&#xA;&lt;p&gt;In this post I mainly wanted to explain why ARC-1 exists at all and why it looks the way it does.&lt;/p&gt;&#xA;&lt;p&gt;The next post is where I want to go deeper into the BTP side, because that is where the architecture becomes much more interesting in practice: XSUAA, Destination Service, Cloud Connector, Principal Propagation, and how this can fit into a real enterprise setup instead of just a developer laptop.&lt;/p&gt;&#xA;&lt;h2 id=&#34;discuss-this-post&#34;&gt;Discuss this post&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://saptodon.org/@Mianbsp/116477784495254338&#34;&gt;Saptodon&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://bsky.app/profile/marian.zeis.de/post/3mkikvj4aos2k&#34;&gt;Bluesky&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.linkedin.com/posts/marianzeis_introducing-arc-1-an-enterprise-adt-mcp-activity-7454748910893457408-M8BU&#34;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;references--links&#34;&gt;References &amp;amp; links&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1&#34;&gt;ARC-1 on GitHub&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/&#34;&gt;ARC-1 Documentation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/architecture/&#34;&gt;ARC-1 Architecture&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/enterprise-auth/&#34;&gt;ARC-1 Authentication Overview&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/security-guide/&#34;&gt;ARC-1 Security Guide&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.zeis.de/posts/2026-04-20-how-i-use-ai/&#34;&gt;How I Use AI for Development and Why Context Matters&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.zeis.de/posts/2026-04-22-ai-abap-development/&#34;&gt;ABAP and Agentic AI: The Hidden Problem in Real Projects&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/marcellourbani/abap-adt-api&#34;&gt;Marcello Urbani: abap-adt-api&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/lemaiwo/btp-sap-odata-to-mcp-server&#34;&gt;Wouter Lemaire: btp-sap-odata-to-mcp-server&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/oisee/vibing-steampunk&#34;&gt;oisee/vibing-steampunk&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/fr0ster/mcp-abap-adt&#34;&gt;fr0ster/mcp-abap-adt&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/DassianInc/dassian-adt&#34;&gt;DassianInc/dassian-adt&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1/blob/main/skills/README.md&#34;&gt;ARC-1 Skills Catalog&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://community.sap.com/t5/technology-blog-posts-by-sap/introducing-the-next-era-of-abap-development/ba-p/14260522&#34;&gt;Introducing the Next Era of ABAP Development&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://community.sap.com/t5/technology-blog-posts-by-sap/abap-ai-chapter-3-we-go-agentic/ba-p/14391469&#34;&gt;ABAP AI - Chapter 3: We Go Agentic!&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/configuring-adt-mcp-server-ed94320814734d97801f51a5b6deb802&#34;&gt;Configuring the ADT MCP Server&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/model-context-protocol-tools&#34;&gt;SAP Model Context Protocol Tools&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://help.sap.com/doc/sap-api-policy/latest/en-US/API_Policy_latest.pdf&#34;&gt;SAP API Policy&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.arc-1-mcp.com/sap-api-policy-and-architecture/&#34;&gt;ARC-1 API Policy and Architecture Alignment&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tools.hana.ondemand.com/#abap&#34;&gt;ABAP Development Tools SDK&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.sap.com/documents/2013/04/12289ce1-527c-0010-82c7-eda71af511fa.html&#34;&gt;Create and Consume RESTful APIs in ADT&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://community.sap.com/t5/technology-blog-posts-by-sap/abap-development-tools-for-vs-code-everything-you-need-to-know/bc-p/14263439/highlight/true#M186133&#34;&gt;ABAP Development Tools for VS Code discussion&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
  </channel>
</rss>
