This guide covers the complete reproduction: verify the package, configure SAP, test both connections, create a scenario, reconcile the results and restore the starting state. Start with the documented sandbox cases.
Package and version#
Download package 0.1.0-preview from GitHub (tag v0.1.0-preview)
SHA-256 checksums of the package files · Package contents and license · Source on GitHub
The package contains the bridge, connection checker, OpenAPI for six GET tools, configuration helper, Groovy script, sanitized single-iFlow export, run and report scripts for both cases, reference values, dependencies and license notes. It contains no project or pool files with SAP data: these are created using your own sandbox access.
Download the archive of the fixed tag v0.1.0-preview and extract it into a new folder, for example C:\Rillsoft-SAP (GitHub places the content in a subfolder rillsoft-sap-mcp-examples-0.1.0-preview; work inside it). SHA256SUMS is part of the package and lists the checksum of every file; the sap-demo.zip line refers to the release asset and is skipped for the tag archive. Always obtain package and checksums from the same fixed version, never from main.
cd C:\Rillsoft-SAP\rillsoft-sap-mcp-examples-0.1.0-preview
Get-Content .\SHA256SUMS | ForEach-Object {
$hash, $name = $_ -split ' ', 2
if ($name -ne 'sap-demo.zip') {
if ((Get-FileHash -LiteralPath $name -Algorithm SHA256).Hash -ne $hash) {
throw "Checksum mismatch: $name"
}
}
}
node --version
py --version
py -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txtThe bridge requires Node.js 18 or later; use a supported release. Python 3.13 and PyYAML 6.0.3 are the documented script test environment. Stop if a file is missing or a checksum differs, then download the same release again.
1. Configure SAP and the client#
Complete SAP setup, followed by the client connection. Both scenarios use the same setup. You operate accounts, terms, roles, keys and deployments; the AI assists with local steps and explains the checks. Keep credentials in a separate file, such as C:\Rillsoft-SAP-Keys\sap_mcp.env, never in chat, screenshots or command arguments.
2. Prepare Rillsoft and the working directory#
Start a dedicated Rillsoft instance with MCP enabled. Use a new empty project and preserve other open projects. Record the local MCP endpoint, for example http://127.0.0.1:3928/mcp. Close any resource-pool editing unit. The scripts copy the original pool into the new run directory and check that the original pool remains unchanged afterwards.
For each preparation and write run, --output must name a new private directory that does not yet exist. Outputs contain SAP data, a project and a pool; do not put them in the public repository. Decide in advance whether to save the new project. --save-project saves only project.rpj in the new run directory; omitting it saves no project file.
3. Choose the scenario and review the mapping#
Confirm order type, plant, work centers, source period (exclusive end) and shift in whole weeks. The examples document the complete mappings and reference values. Defaults are: production plant 1710, February–March 2023, +193 weeks; maintenance plant 1010, August 2022, +222 weeks. For production, also clarify whether lines are interchangeable. The example scripts support only the documented work-center profiles; another plant or shift model needs a newly verified mapping.
$env:SAP_MCP_ENV_FILE = 'C:\Rillsoft-SAP-Keys\sap_mcp.env'
.\.venv\Scripts\python.exe lauf_batterie.py --output C:\Rillsoft-SAP-Runs\battery-preparation --rillsoft-url http://127.0.0.1:3928/mcp
# Alternatively, maintenance:
.\.venv\Scripts\python.exe lauf_instandhaltung.py --output C:\Rillsoft-SAP-Runs\staff-preparation --rillsoft-url http://127.0.0.1:3928/mcpExpect PREPARED only and mapping.json. Check plant, period, work centers, headcounts/machine counts, and 6 orders/48 operations or 30 orders/117 operations. People are placeholders. Do not start a write run if the data or mapping differs. Record the actual mapping_sha256; it binds confirmation to these exact SAP records.
4. Create the model and deliver the full report#
After confirming the mapping, use another new output directory and replace <mapping_sha256> with the actual value. The AI must not guess it. The scripts recheck the mapping before making the first change in Rillsoft.
.\.venv\Scripts\python.exe lauf_batterie.py --output C:\Rillsoft-SAP-Runs\battery-run --rillsoft-url http://127.0.0.1:3928/mcp --execute --mapping-sha256 <mapping_sha256> --save-project
.\.venv\Scripts\python.exe auswertung_batterie.py C:\Rillsoft-SAP-Runs\battery-run --lang both
# Alternatively, maintenance:
.\.venv\Scripts\python.exe lauf_instandhaltung.py --output C:\Rillsoft-SAP-Runs\staff-run --rillsoft-url http://127.0.0.1:3928/mcp --execute --mapping-sha256 <mapping_sha256> --save-project
.\.venv\Scripts\python.exe auswertung_instandhaltung.py C:\Rillsoft-SAP-Runs\staff-run --lang bothA changed data digest, existing output directory or nonempty project stops the run. Before reporting, reconcile orders/operations, net time or work, dependencies and subproject boundaries. After creating operations, set each subproject start and finish to its earliest/latest child date; operation dates must not change. The analysis checks the reference case and produces German/English reports. Changed sandbox records trigger a discrepancy message; reference figures must never substitute for missing measurements.
The complete report must contain key findings, a reconciliation table, capacity per machine type or role (demand/supply, peaks and shortfalls by hour/day/week), specific overlaps, source and date shift, and limits. List all delivered parts at the end. Do not replace a required table or visualization with a summary.
5. Check restoration#
Check endzustand.json: wiederhergestellt, originalPoolHashUnchanged and originalViewRestored must all be true. Verify the original pool path and starting view in Rillsoft. Keep new project/pool files only at the previously confirmed destinations. After a crash, stop immediately, preserve the dump and call sequence privately, and make no further MCP calls. Failed restoration is not a successful overall run.
Complete instructions for the AI#
What this block is: the complete work instruction for the AI as one continuous plain text, chapters 1 to 5 of this guide in Markdown, exactly as the AI should read it. It is meant to be copied, not read on this page: headings therefore appear with #, and long paragraphs run on to the right as a single line. Select the whole block, paste it into your AI client and let the AI guide the rebuild with it. The same file ships in the package as arbeitsanweisung.en.md.
# Complete AI instructions: SAP and Rillsoft
Read this entire instruction before making changes. Guide the person through SAP steps and perform the local work. Ask once for order type, plant, work centers, source period, week shift, working directory, local MCP endpoint and save destination. For production, also clarify whether lines are interchangeable.
Work only in a confirmed dedicated Rillsoft instance with an empty project and a copied pool. SAP stays read-only. Never expose credentials; preserve existing client entries. Confirm the mapping and data digest before a write run. Do not overwrite existing files. Execute setup and checks in this order: package verification in chapter 1, SAP in chapter 2, client in chapter 3, chosen model in chapter 4 or 5, then preparation/write run, full report and restoration in chapter 1.
Stop on an error or crash and report the discrepancy. Deliver every required report part and list them at the end. The requester waived the new SAP-account test on 23 October 2026; do not report it as passed.
## 1. Reproduce the Rillsoft SAP demo step by step
This guide covers the complete reproduction: verify the package, configure SAP, test both connections, create a scenario, reconcile the results and restore the starting state. Start with the documented sandbox cases.
Verification scope: Rillsoft Project 10.0.626, SAP S/4HANA Cloud sandbox via the MCP Gateway. iFlow import checked on 22 October 2026; packaged scenarios, SAP connection, reconciliation and restoration rechecked on 23 October 2026; free prompt run in German and English through to the report passed on 24 October 2026. A rebuild in a fresh environment with a new SAP account follows the publication; whatever it finds will be corrected.
### Package and version
Version 0.1.0-preview — https://github.com/rillsoft/rillsoft-sap-mcp-examples
Download package 0.1.0-preview from GitHub (tag v0.1.0-preview): https://github.com/rillsoft/rillsoft-sap-mcp-examples/archive/refs/tags/v0.1.0-preview.zip
SHA-256 checksums of the package files: https://raw.githubusercontent.com/rillsoft/rillsoft-sap-mcp-examples/v0.1.0-preview/SHA256SUMS
The package contains the bridge, connection checker, OpenAPI for six GET tools, configuration helper, Groovy script, sanitized single-iFlow export, run and report scripts for both cases, reference values, dependencies and license notes. It contains no project or pool files with SAP data: these are created using your own sandbox access.
Download the archive of the fixed tag `v0.1.0-preview` and extract it into a new folder, for example `C:\Rillsoft-SAP` (GitHub places the content in a subfolder `rillsoft-sap-mcp-examples-0.1.0-preview`; work inside it). `SHA256SUMS` is part of the package and lists the checksum of every file; the `sap-demo.zip` line refers to the release asset and is skipped for the tag archive. Always obtain package and checksums from the same fixed version, never from `main`.
```powershell
cd C:\Rillsoft-SAP\rillsoft-sap-mcp-examples-0.1.0-preview
Get-Content .\SHA256SUMS | ForEach-Object {
$hash, $name = $_ -split ' ', 2
if ($name -ne 'sap-demo.zip') {
if ((Get-FileHash -LiteralPath $name -Algorithm SHA256).Hash -ne $hash) {
throw "Checksum mismatch: $name"
}
}
}
node --version
py --version
py -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
```
The bridge requires Node.js 18 or later; use a supported release. Python 3.13 and PyYAML 6.0.3 are the documented script test environment. Stop if a file is missing or a checksum differs, then download the same release again.
### 1. Configure SAP and the client
Complete SAP setup, followed by the client connection. Both scenarios use the same setup. You operate accounts, terms, roles, keys and deployments; the AI assists with local steps and explains the checks. Keep credentials in a separate file, such as `C:\Rillsoft-SAP-Keys\sap_mcp.env`, never in chat, screenshots or command arguments.
### 2. Prepare Rillsoft and the working directory
Start a dedicated Rillsoft instance with MCP enabled. Use a new empty project and preserve other open projects. Record the local MCP endpoint, for example `http://127.0.0.1:3928/mcp`. Close any resource-pool editing unit. The scripts copy the original pool into the new run directory and check that the original pool remains unchanged afterwards.
For each preparation and write run, `--output` must name a new private directory that does not yet exist. Outputs contain SAP data, a project and a pool; do not put them in the public repository. Decide in advance whether to save the new project. `--save-project` saves only `project.rpj` in the new run directory; omitting it saves no project file.
### 3. Choose the scenario and review the mapping
Confirm order type, plant, work centers, source period (exclusive end) and shift in whole weeks. The examples document the complete mappings and reference values. Defaults are: production plant 1710, February–March 2023, +193 weeks; maintenance plant 1010, August 2022, +222 weeks. For production, also clarify whether lines are interchangeable. The example scripts support only the documented work-center profiles; another plant or shift model needs a newly verified mapping.
```powershell
$env:SAP_MCP_ENV_FILE = 'C:\Rillsoft-SAP-Keys\sap_mcp.env'
.\.venv\Scripts\python.exe lauf_batterie.py --output C:\Rillsoft-SAP-Runs\battery-preparation --rillsoft-url http://127.0.0.1:3928/mcp
## Alternatively, maintenance:
.\.venv\Scripts\python.exe lauf_instandhaltung.py --output C:\Rillsoft-SAP-Runs\staff-preparation --rillsoft-url http://127.0.0.1:3928/mcp
```
Expect `PREPARED only` and `mapping.json`. Check plant, period, work centers, headcounts/machine counts, and 6 orders/48 operations or 30 orders/117 operations. People are placeholders. Do not start a write run if the data or mapping differs. Record the actual `mapping_sha256`; it binds confirmation to these exact SAP records.
### 4. Create the model and deliver the full report
After confirming the mapping, use another new output directory and replace `<mapping_sha256>` with the actual value. The AI must not guess it. The scripts recheck the mapping before making the first change in Rillsoft.
```powershell
.\.venv\Scripts\python.exe lauf_batterie.py --output C:\Rillsoft-SAP-Runs\battery-run --rillsoft-url http://127.0.0.1:3928/mcp --execute --mapping-sha256 <mapping_sha256> --save-project
.\.venv\Scripts\python.exe auswertung_batterie.py C:\Rillsoft-SAP-Runs\battery-run --lang both
## Alternatively, maintenance:
.\.venv\Scripts\python.exe lauf_instandhaltung.py --output C:\Rillsoft-SAP-Runs\staff-run --rillsoft-url http://127.0.0.1:3928/mcp --execute --mapping-sha256 <mapping_sha256> --save-project
.\.venv\Scripts\python.exe auswertung_instandhaltung.py C:\Rillsoft-SAP-Runs\staff-run --lang both
```
A changed data digest, existing output directory or nonempty project stops the run. Before reporting, reconcile orders/operations, net time or work, dependencies and subproject boundaries. After creating operations, set each subproject start and finish to its earliest/latest child date; operation dates must not change. The analysis checks the reference case and produces German/English reports. Changed sandbox records trigger a discrepancy message; reference figures must never substitute for missing measurements.
The complete report must contain key findings, a reconciliation table, capacity per machine type or role (demand/supply, peaks and shortfalls by hour/day/week), specific overlaps, source and date shift, and limits. List all delivered parts at the end. Do not replace a required table or visualization with a summary.
### 5. Check restoration
Check `endzustand.json`: `wiederhergestellt`, `originalPoolHashUnchanged` and `originalViewRestored` must all be true. Verify the original pool path and starting view in Rillsoft. Keep new project/pool files only at the previously confirmed destinations. After a crash, stop immediately, preserve the dump and call sequence privately, and make no further MCP calls. Failed restoration is not a successful overall run.
### Steps and examples
- [Set up SAP MCP Gateway for Rillsoft](https://rillsoft.ai/en/developers/sap-mcp-gateway-setup/)
- [Connect SAP and Rillsoft in one AI client](https://rillsoft.ai/en/developers/connect-sap-rillsoft-client/)
- [Check SAP production order capacity with AI](https://rillsoft.ai/en/examples/sap-production-order-capacity/)
- [Check SAP maintenance workforce capacity with AI](https://rillsoft.ai/en/examples/sap-maintenance-order-capacity/)
### Recognise and resolve errors
| Message or observation | Resolution |
|---|---|
| `FailedToResolveAPIKey`, `Invalid ApiKey` | Use Process Integration Runtime instead of Agent Subscription; check scopes. |
| `noCredentials` | Check APIKey in the iFlow and its forwarding in Request Headers. |
| `response exceeded token limit` | Check filtering; Groovy must prefix OData parameters with `$`. |
| `Invalid token detected at position 0`, `Resource not found for URI segment` | Put the query only in Address; avoid double encoding through an API artifact. |
| HTTP 500 with MPL ID | Read Error Details; check field names, replace long OR lists with plant/period filtering. |
| `tools/list` returns 0 instead of 6 | Add tools individually; check deployment and target path. |
| Pool switch rejected: new, unchanged project required | Create the project without a name, switch the pool, then name it. |
| Total duration rises to 2,503 instead of 2,449.15 h | Set the one-minute grid; do not round each task to hours. |
| Machine supply grows with double booking | Assign the machine type to the task; assign specific machines only without overlaps. |
| Night hours missing or supply does not match shift | Set the report's project calendar to the machine type's shift. |
| Successors move by hours | Use the break factor instead of a fixed break window; round occupied time to whole minutes. |
| Machine type assignment to milestone rejected | Keep zero duration without a machine type; set its date to the predecessor's finish. |
| Session limit reached | Close your own MCP session with `DELETE /mcp`; preserve other sessions. If restarting, start Rillsoft before Claude. |
The German Rillsoft errors recorded in the source run include “nur bei einem neuen, unveränderten Projekt”, “Einem Meilenstein können keine Maschinenrollen zugewiesen werden” and “Sitzungsgrenze erreicht”. The English explanations above are translations, not claimed verbatim English runtime messages.
### Frequently asked questions
#### What does the test cost?
The setup used SAP BTP Trial and sandbox. The SAP account, available trial services, [Rillsoft trial](https://www.rillsoft.com/download/) and Claude access have separate terms. In particular, this guide does not cover an AI subscription. It does not promise that all components are free of charge.
### Sources and trademarks
Demo evidence: Rillsoft runs of 20 October 2026 for battery manufacturing, maintenance in plant 1010, line 26XR1 and four lines, each using Rillsoft Project 10.0.626. This guide was compiled from that evidence on 22 October 2026; the figures were confirmed on 24 October 2026 in the free prompt run (German and English, through to the report).
This example uses the MCP Gateway in SAP Integration Suite, which SAP describes as its intended access path for external AI agents connecting to SAP systems. The [SAP API Policy](https://help.sap.com/doc/sap-api-policy/latest/en-US/API_Policy_latest.pdf), particularly section 2.2.2, and the terms and access restrictions of the services used still apply. The demo only reads sandbox data and does not write changes back to SAP.
SAP, SAP S/4HANA, SAP BTP and SAP Integration Suite are trademarks or registered trademarks of SAP SE or its affiliates in Germany and in other countries. This guide is published by Rillsoft GmbH and does not represent SAP certification or partnership.
Back to [Connect Rillsoft Project to SAP](https://rillsoft.ai/en/developers/connect-rillsoft-project-to-sap/).
## 2. Set up SAP MCP Gateway for Rillsoft
This guide takes you from an SAP trial account to six read-only MCP tools for the Rillsoft example. At the end, check the filter and sort order as well as connectivity.
**Free to try:** Everything shown runs in the free [SAP BTP trial](https://www.sap.com/products/technology-platform/trial.html) with Integration Suite and the free [30-day trial of Rillsoft Project](https://rillsoft.ai/en/connect/) – no customer system needed, using SAP's sandbox data.
Verification scope: Rillsoft Project 10.0.626, SAP S/4HANA Cloud sandbox via the MCP Gateway. iFlow import checked on 22 October 2026; packaged scenarios, SAP connection, reconciliation and restoration rechecked on 23 October 2026; free prompt run in German and English through to the report passed on 24 October 2026. A rebuild in a fresh environment with a new SAP account follows the publication; whatever it finds will be corrected.
**Before you start:** [Reproduce the Rillsoft SAP demo step by step](https://rillsoft.ai/en/developers/reproduce-sap-demo/) — unpack the package, compare hashes and prepare a private credentials file.
### Prerequisites
| Prerequisite | Purpose and check |
|---|---|
| SAP Universal ID and [SAP BTP Trial](https://www.sap.com/products/technology-platform/trial.html) | Create the account and accept terms yourself. The demo used US East (VA), `us10`, with Cloud Foundry and space `dev`. First check that Integration Cell is available in your region. |
| SAP Integration Suite Trial with Cloud Integration and API Management | The iFlow runs in Cloud Integration; the MCP server runs in Integration Cell. These are separate runtimes. |
| Access to [SAP Business Accelerator Hub](https://api.sap.com/) | Your own sandbox API key. A production SAP system is not required. |
| Windows and [Rillsoft Project 10](https://www.rillsoft.com/solution/rillsoft-project/) from build 10.0.626 | The local MCP server; start with the [trial version](https://www.rillsoft.com/download/). Check its current terms there. |
| Node.js 18 or later, Python 3, Claude Code or Claude Desktop | Node runs the bridge; Python is needed for the run scripts. Use a supported Node release. |
Allow time for provisioning: capabilities took about 60 minutes and Integration Cell another 30 minutes in the demo. These are waiting times only; account setup, the iFlow and checks take additional time. No accepted timing for the complete reproduction is available yet. Your account displays the trial duration and available services; the recorded BTP trial had a maximum duration of 90 days.
### 1. Trial account, subscription and first role
**You:** Open your BTP subaccount. Under **Services → Service Marketplace**, select **Integration Suite → Create**, plan `trial`. Under **Security → Users → your user → Assign Role Collection**, first assign `Integration_Provisioner`. Sign out and back in, then open the subscribed Integration Suite application.
**Check:** **Services → Instances and Subscriptions** shows **Subscribed**. **Add Capabilities** is available in Integration Suite. If the button is unavailable, check the role collection and sign in again. The other roles are created during provisioning in the next step.
### 2. Capabilities, additional roles and Integration Cell
**You:** Open **Home → Manage Capabilities → Add Capabilities**. Enable **Build Integration Scenarios** and **Manage APIs**. Leave **Message Queues** off for Cloud Integration and **API Composition** off for API Management. **Developer Hub** was enabled in the recorded setup, but this connection path does not use it.

*SAP MCP Gateway setup for Rillsoft – Step 1: After activation both capabilities show 'Active' – only then continue with Integration Cell.*
Once the capabilities show **Active**, assign these additional role collections in the BTP subaccount:
| Role | Purpose |
|---|---|
| `APIPortal.Administrator` | Edit MCP servers and policies |
| `APIManagement.SelfService.Administrator` | Manage runtimes |
| `PI_Administrator` and `PI_Integration_Developer` | Create, deploy and monitor iFlows |
Sign out and back in. Open **Settings → Runtimes → Integration Cell → Activate**. This path does not require **Classic API Management**.

*SAP MCP Gateway setup for Rillsoft – Step 2: Integration Cell is the second runtime; the MCP server runs there, the iFlow in Cloud Integration.*
**Check:** Integration Cell shows **Active**. Note its virtual host locally; this becomes part of the MCP URL. If the menu only shows **Home** and **Settings**, check role assignments and renew the login. Screenshots show the 19–20 October 2026 demo: some BTP dialogs used German labels; Integration Suite used English.
### 3. OAuth access and sandbox key
**You:** BTP subaccount → **Services → Instances and Subscriptions → Create**. Enter:
| Field | Value |
|---|---|
| Service | `SAP Process Integration Runtime` |
| Plan | `integration-flow` |
| Runtime Environment / Space | `Cloud Foundry` / `dev` |
| Instance Name | `rillsoft-mcp-client` |
| Roles | `ESBMessaging.send`, `API.invoke` |
| Grant-types | `Client Credentials` |

*SAP MCP Gateway setup for Rillsoft – Step 3: The Process Integration Runtime instance with plan integration-flow later provides the service key for the bridge.*

*SAP MCP Gateway setup for Rillsoft – Step 3: Both roles and Client Credentials are mandatory; without one of them the gateway answers 401 or 403.*
Create a **Service Key** for the instance, for example `rillsoft-mcp-key`. Transfer `oauth.tokenurl`, `oauth.clientid` and `oauth.clientsecret` directly into your local credentials file, never into the chat. Add `SAP_MCP_URL` after step 6. The `sap_mcp.env.example` template contains placeholders only.
For the sandbox key, open **SAP Business Accelerator Hub → Settings → API Settings → Show API Key**. Accept the initial terms yourself. Enter this key in the iFlow in step 4; it does not belong in the Claude configuration.
**AI check:** a Client Credentials token request must return HTTP 200. Do not print tokens or keys. The later `check.js` test uses this access. A Developer Hub **Agent Subscription** is not a substitute: in the demo it lacked the required scopes and tool calls returned `steps.oauth.v2.FailedToResolveAPIKey` or `Invalid ApiKey`.
### 4. Package and iFlow for read-only OData calls
**Route A — import the prepared iFlow:** Create an empty package. Choose **Edit → Add → Integration Flow → Upload** and select `Rillsoft_SAP_Sandbox.zip` from the example package. Under **Configure**, enter your sandbox key in the externalized `SAP_Sandbox_APIKey` parameter. Import into an empty package was checked on 22 October 2026. If the ID or sender address already exists, use a distinct ID and unused sender path, then adjust your private OpenAPI accordingly. This single-artifact export does not contain the MCP server: create it in step 6.
**Check:** Configure shows the parameter; the artifact contains no supplied secret. Continue with step 5 to deploy and test a read-only call.
**Route B — build the iFlow manually:** The following settings provide the complete alternative to importing.
**You:** Integration Suite → **Design → Integrations and APIs → Create**. Package name `Rillsoft SAP Demo`, ID `RillsoftSAPDemo`, version `1.0.0`, vendor `Rillsoft GmbH`. Then **Edit → Add → Integration Flow**, name and ID `Rillsoft_SAP_Sandbox`, **Runtime Profile: Cloud Integration**.

*SAP MCP Gateway setup for Rillsoft – Step 4: The iFlow is created in the package with runtime profile Cloud Integration; name as in the example package.*
Connect **Start → Content Modifier → Groovy Script → Request Reply → End**. The HTTPS sender connects to Start; the HTTP receiver connects to Request Reply.

*SAP MCP Gateway setup for Rillsoft – Step 4: The complete flow from the HTTPS request via Content Modifier and Groovy script to the Request Reply to the SAP S/4HANA Cloud sandbox.*
| Element and tab | Settings |
|---|---|
| HTTPS sender, Connection | Address `/rillsoft-sandbox/*`; Authorization `User Role`; User Role `ESBMessaging.send`; CSRF Protected off because all operations are GET. |
| Content Modifier, Message Header | Action `Create`; Name `APIKey`; Source Type `Constant`; Source Value **your sandbox key**. |
| Groovy Script, Processing | Upload and select `iflow_odata_params.groovy` from the package as a script resource; leave the function empty (`processData`). |
| HTTP receiver, Connection | Address below; Query **empty**; Proxy Type `Internet`; Method `GET`; Authentication `None` (the sandbox checks the APIKey header); Timeout `60000` ms. |
| HTTP receiver, Header Details | Request Headers `APIKey|traceparent`; Response Headers `*`. |
HTTP receiver address, unchanged including its placeholders:
```text
https://sandbox.api.sap.com/s4hanacloud/sap/opu/odata/sap/${header.CamelHttpPath}?${header.CamelHttpQuery}
```

*SAP MCP Gateway setup for Rillsoft – Step 5: The sender accepts the calls of the MCP Gateway; the role ESBMessaging.send belongs to the instance from step 3.*

*SAP MCP Gateway setup for Rillsoft – Step 5: The API key of the SAP Business Accelerator Hub lives in the iFlow, never with the AI client.*

*SAP MCP Gateway setup for Rillsoft – Step 5: The gateway sends OData parameters without '$'; the script adds it, otherwise the sandbox ignores filter and sort order.*

*SAP MCP Gateway setup for Rillsoft – Step 5: The receiver calls the sandbox API and forwards query and APIKey; read-only GET calls only.*
**Why these settings:** the gateway sends `filter` and `orderby` without `$`. The Groovy script prefixes only the parameter names, leaving values unchanged. Put the query in **Address**, because the separate Query field encodes it again. An API artifact instead of the iFlow produced `Invalid token detected at position 0` for values containing spaces.
**Check:** briefly move an inserted step: its connecting arrows must move with it. Otherwise it is only visually on the line and deployment can return `deployment failed`. Never share an export containing an actual key. Before a later export, replace the constant with a clearly named placeholder; customer-system credentials belong in Security Material.
### 5. Deploy the iFlow and check the backend
**You:** **Deploy → Cloud Integration**. Expect `successfully deployed`. Under **Monitor → Integrations and APIs → Manage Integration Content**, the iFlow must show **Started**. Keep its HTTPS endpoint locally.
**AI:** use the OAuth token for a read-only iFlow test. Append this path and query after its `/http` base:
```text
/rillsoft-sandbox/API_WORK_CENTERS/A_WorkCenters?$top=3&$select=WorkCenter,Plant&$filter=Plant eq '1710'&$orderby=WorkCenter desc
```
**Check:** exactly three work centres, all in plant `1710`, sorted by work centre descending. HTTP 200 without checking the filter is insufficient. If the iFlow returns HTTP 500 with an MPL ID, open **Monitor → Integrations and APIs → Message Processing → Error Details**. An invalid OData field can also appear externally as HTTP 500. For `noCredentials`, check APIKey in the Content Modifier and **Request Headers**.
### 6. MCP server and policies
**You:** In the package, select **Edit → Add → MCP Server**. Choose **HTTP Endpoint with OpenAPI Specification**, not **API**.
| Field | Value |
|---|---|
| Method / File | `Upload` / `openapi.json` from the package |
| Source / URL | `URL` / iFlow base address up to and including `/http` |
| Name / ID | `Rillsoft_SAP_Feinplanung_MCP` |
| MCP Path | `/rillsoft-feinplanung-mcp` |
| Version | `1.0.0` |
| Runtime Profile / Virtual Host | `Integration Cell` / your host from step 2 |
The published OpenAPI deliberately uses `example.invalid` instead of account addresses. Before uploading, create a private copy with `configure_openapi.py --iflow-url <HTTPS-base-through-http> --gateway-url <MCP-URL> --output <private-file.json>`. Upload that copy and use the iFlow base in Source / URL. Do not publish the customised file.

*SAP MCP Gateway setup for Rillsoft – Step 6: The OpenAPI yields the six read-only tools for orders, operations, work centres and capacities.*
Check that **MCP Configuration → Tools** lists **6** tools. “Select all” did not take effect in the demo wizard. Add missing tools individually through **Add Tools** and check the selected count after each checkbox.

*SAP MCP Gateway setup for Rillsoft – Step 6: Select each operation individually and check the counter – it must end at exactly six tools.*
Under **Policies**, set Authentication types `Client Certificate` and `OAuth`, with **External OAuth (OIDC)** off. Authorization: `OAuth Scope or Developer Key`, Scope Key `scope`, Scopes `API.invoke` and `ESBMessaging.send`. This demo allows those two scopes; the step 3 token carries both. At the HTTP target use Request/Response Headers `*` to forward the Bearer token to the iFlow, whose sender checks `ESBMessaging.send` again.

*SAP MCP Gateway setup for Rillsoft – Step 7: Authorization binds the server to the scopes of the Process Integration Runtime instance.*

*SAP MCP Gateway setup for Rillsoft – Step 7: OAuth client credentials are the bridge.js route; afterwards check.js verifies connectivity, filter and sort order.*
**Check:** **Deploy → Integration Cell**, status **Started**. Keep Log Level `Info`. Enter the displayed MCP URL as `SAP_MCP_URL` in your credentials file. For `artifactNotFound`, verify the host and path of the server actually deployed.
### Frequently asked questions
#### Do I need SAP Integration Suite?
Yes, for this tested path: Cloud Integration hosts the iFlow and Integration Cell hosts MCP Gateway. SAP describes the setup in its [gateway tutorial](https://developers.sap.com/tutorials/btp-integration-suite-mcp-gateway/).
### Recognise errors
Messages from the gateway, iFlow and sandbox – such as `FailedToResolveAPIKey`, `noCredentials`, HTTP 500 with an MPL ID or `tools/list` returning 0 instead of 6 tools – are listed with remedies in the error table of the reproduction guide: [Recognise and resolve errors](https://rillsoft.ai/en/developers/reproduce-sap-demo/#recognise-and-resolve-errors).
### Verify the connection
[Connect SAP and Rillsoft in one AI client](https://rillsoft.ai/en/developers/connect-sap-rillsoft-client/).
### Sources and trademarks
Demo evidence: Rillsoft runs of 20 October 2026 for battery manufacturing, maintenance in plant 1010, line 26XR1 and four lines, each using Rillsoft Project 10.0.626. This guide was compiled from that evidence on 22 October 2026; the figures were confirmed on 24 October 2026 in the free prompt run (German and English, through to the report).
This example uses the MCP Gateway in SAP Integration Suite, which SAP describes as its intended access path for external AI agents connecting to SAP systems. The [SAP API Policy](https://help.sap.com/doc/sap-api-policy/latest/en-US/API_Policy_latest.pdf), particularly section 2.2.2, and the terms and access restrictions of the services used still apply. The demo only reads sandbox data and does not write changes back to SAP.
SAP, SAP S/4HANA, SAP BTP and SAP Integration Suite are trademarks or registered trademarks of SAP SE or its affiliates in Germany and in other countries. This guide is published by Rillsoft GmbH and does not represent SAP certification or partnership.
Back to [Connect Rillsoft Project to SAP](https://rillsoft.ai/en/developers/connect-rillsoft-project-to-sap/).
## 3. Connect SAP and Rillsoft in one AI client
Connect the SAP Gateway and the local Rillsoft MCP server in the same AI client. Test each connection read-only before creating a planning example.
Verification scope: Rillsoft Project 10.0.626, SAP S/4HANA Cloud sandbox via the MCP Gateway. iFlow import checked on 22 October 2026; packaged scenarios, SAP connection, reconciliation and restoration rechecked on 23 October 2026; free prompt run in German and English through to the report passed on 24 October 2026. A rebuild in a fresh environment with a new SAP account follows the publication; whatever it finds will be corrected.
**Starting point:** [Set up SAP MCP Gateway for Rillsoft](https://rillsoft.ai/en/developers/sap-mcp-gateway-setup/) is complete through the started MCP server; the package from [Reproduce the Rillsoft SAP demo step by step](https://rillsoft.ai/en/developers/reproduce-sap-demo/) is unpacked. Node.js and Python must run locally. Credentials remain in your private file.
### Check the bridge and connect Claude
**AI:** check the local files, then the connection. Replace only the path to the credentials file; never put keys in command lines:
```powershell
cd C:\Rillsoft-SAP
node --check bridge.js
$env:SAP_MCP_ENV_FILE = 'C:\Rillsoft-SAP-Keys\sap_mcp.env'
node check.js
```
**Check:** `initialize: OK`, `tools/list: 6 tools`, finally `PASS` for three orders in plant 1710 with descending start dates. Missing tools, a failed filter or a timeout produce a failing exit code. Order data is not printed. Investigate changes in sandbox data instead of reporting success.
For Claude Code:
```powershell
claude mcp add sap-gateway --scope user -e SAP_MCP_ENV_FILE=C:\Rillsoft-SAP-Keys\sap_mcp.env -- node C:\Rillsoft-SAP\bridge.js
```
For Claude Desktop: **Settings → Developer → Edit Config**. Add `sap-gateway` from `claude_desktop_config.example.json` under `mcpServers`, preserving existing entries. Use absolute paths, then fully restart Desktop.
Start Rillsoft Project **before** Claude. Connect the second server using [Connect Claude to Rillsoft MCP](https://rillsoft.ai/en/developers/connect-claude-to-rillsoft-mcp/). In Claude `/mcp` or **Developer**, check that **both** servers are connected. Begin read-only: query SAP work centres in plant 1710 and read the Rillsoft project name with `rillsoft_project_tree_get`. The subsequent transfer needs write access in Rillsoft; SAP remains GET-only.
### Recognise errors
If `tools/list` stays empty, the filter check fails or Rillsoft Project reports its session limit, use the error table of the reproduction guide: [Recognise and resolve errors](https://rillsoft.ai/en/developers/reproduce-sap-demo/#recognise-and-resolve-errors).
### Next step
[Check SAP production order capacity with AI](https://rillsoft.ai/en/examples/sap-production-order-capacity/) · [Check SAP maintenance workforce capacity with AI](https://rillsoft.ai/en/examples/sap-maintenance-order-capacity/) · [Reproduce the Rillsoft SAP demo step by step](https://rillsoft.ai/en/developers/reproduce-sap-demo/)
Back to [Connect Rillsoft Project to SAP](https://rillsoft.ai/en/developers/connect-rillsoft-project-to-sap/).
## 4. Check SAP production order capacity with AI
Six production orders result in 48 operations. Battery assembly needs 169.1 hours against 234 hours of supply, yet has a 21.7-hour shortfall: SAP schedules operations on the same work center at the same time.
Verification scope: Rillsoft Project 10.0.626, SAP S/4HANA Cloud sandbox via the MCP Gateway. iFlow import checked on 22 October 2026; packaged scenarios, SAP connection, reconciliation and restoration rechecked on 23 October 2026; free prompt run in German and English through to the report passed on 24 October 2026. A rebuild in a fresh environment with a new SAP account follows the publication; whatever it finds will be corrected.
### Source data and preparation
Prerequisites are [Connect SAP and Rillsoft in one AI client](https://rillsoft.ai/en/developers/connect-sap-rillsoft-client/) and the preparation in [Reproduce the Rillsoft SAP demo step by step](https://rillsoft.ai/en/developers/reproduce-sap-demo/).
**AI and you together:** choose production or maintenance. Confirm the plant, work centres, source period and any date shift; for production, also establish whether lines are interchangeable. Show the mapping before creating anything. Use a separate Rillsoft instance with a new, empty project and a **copy** of the resource pool. Obtain specific confirmation before discarding an open project or saving a file.
### Production: machine types and occupied time
| SAP data | Rillsoft mapping |
|---|---|
| Production order / operation | Subproject / task with SAP identifiers in the notes |
| Work centre, machine capacity `001` | Machine type on the task; number of machines in the pool from `CapacityNumberOfCapacities` |
| Setup, machine time, labour time, quantity | Battery case: net time = setup + quantity × (machine + labour); first verify `MIN` units |
| Evenly distributed break | Occupied time = net time × shift length ÷ (shift length − break), rounded to whole minutes; no additional fixed break window |
| Shift | Calendar on the task; use the same calendar as the project calendar for that machine type's capacity report |
| Quality inspection with zero duration | Milestone without a machine type, at the predecessor's finish |
| Order sequence | Finish-to-start dependencies; investigate every rejection |
**Sequence:** read pool path and original view → copy pool → `rillsoft_project_create` **without a name** → select pool copy → create master data → save and close pool editing → name the project. Set `timeStepMinutes: 1`, duration and effort units `minute`, mode `deadline_driven`. Naming the new project too early prevents switching pools. Use IDs returned by create calls; do not guess them from an unsaved catalogue.
Read capacity with `rillsoft_view_state_apply`, view `machine_capacity`, grouping `["machine_role"]`, `display: "absolute"`, `capacity: true` and the agreed time filter. Then call `rillsoft_timescale_apply` with `unit: "hour"` and `rillsoft_analysis_report_get`. For different shifts, read **one report per shift model**, taking each machine type from its matching report. Verify that changing the project calendar leaves task dates unchanged. Divide report values in minutes by 60 for hours.
### Rillsoft Project screenshots
Screenshots taken on 23 Oct 2026 from Rillsoft Project 10.0.626 (the test build), client area 1920 × 1080, effort in hours, time filter as stated; the numbers in the image belong to that view and may differ from the report totals in the table – each caption states where its number comes from.

*SAP production order capacity analysis with AI – The 48 SAP operations as subprojects per production order: order 1052633 (1 PC) takes 24 hours on 26/27 Oct, the 10-PC orders 1053124 and 1053127 314.85 hours each. Duration in hours; the SAP dates from 2023 are shifted by 193 weeks, weekday and time of day unchanged.*

*SAP production order capacity analysis with AI – Hourly scale on 10 Nov 2026: from 14:00 to 17:00 SAP puts two operations on the single assembly machine – demand 1.9 and 2 against capacity 1, highlighted. The shortfall column sums the example's 21.7 hours for the time filter from 10 Nov; the chart below draws the selected row.*

*SAP production order capacity analysis with AI – The same row on the day scale: five days are highlighted – 10 to 12 Nov and 17/18 Nov – with up to 18 hours of demand against a 9-hour day shift. The total stays at 21.7 hours because assembly has no spare time on these days that could offset the overlap.*

*SAP production order capacity analysis with AI – The charging station has four chargers (capacity line 4 in the chart). Demand rises from 1 to 2 chargers in the night to 13 Nov and stays below: no shortfall, the column stays empty. The assembly row shows −9.85 here because the time filter starts on 12 Nov.*
### Reference results and timescale
These figures refer to the **20 October 2026** retrieval. SAP may change its sandbox. Reference values are a comparison, never numbers for the AI to substitute into a different run.
| Check | Battery manufacturing: machines |
| --- | ---: |
| Plant / period | 1710; SAP February–March 2023, shifted +193 weeks → 26 Oct–30 Nov 2026 |
| Orders / operations | 6 / 48 |
| Net reconciliation SAP / Rillsoft | 367.50 / 367.48 h duration |
| Dependencies | 42 |
| Occupied time or demand / supply | Assembly 169.1 / 234 h |
| Shortfall: hour / day / week | Assembly 21.7 / 21.7 / 21.7 h |
| Peak concurrent demand | Charging at most 2 of 4 devices |
| Date comparison | At most 2 minutes difference |
For batteries, the capacity filter runs from 26 October 2026 00:00 to 1 December 2026 00:00. Day shift works Monday–Friday 08:00–17:00; charging Monday–Friday 00:00–24:00.
**Shortfall = sum of positive differences between demand and supply in each time bucket.** Day and week allow spare time within their bucket to offset demand. For assembly the shortfall stays at 21.7 h on the hourly, daily and weekly scale: on the affected days the single assembly machine has no spare time that could offset the overlap. In the maintenance example, by contrast, the hourly gap disappears in the daily total. Start with hours for detailed scheduling, then add day/week for an overview. The earlier line 26XR1 run on 20 October 2026 also showed 1,072 / 1,029 / 882 h for the same assembly on hourly/daily/weekly scales. Spare capacity in a weekly total does not establish a conflict-free schedule.
### Reconcile before reporting and restore the starting state
Compare task, order and dependency counts and net time or net work against SAP. Also check that the start and finish of every subproject equal the earliest start and latest finish of its tasks. Where Rillsoft duration includes a break allowance, reverse that factor per task before comparing net values. Document rounding and tolerance before judging the result: less than 0.05 h difference for batteries, at most 1.2 h for the maintenance reference. An excess or rejected dependency requires a discrepancy message, not a completed success report. Restore the view and original pool and verify restoration. Save project/pool files only to the confirmed destination.
### Frequently asked questions
#### One machine type per line or a shared type?
Only interchangeable machines should share a type. In the additional four-line run with 1,176 operations, combined capacity reduced assembly shortfall from 45,076 to 44,780 hours. Interchangeability does not automatically remove simultaneous overload.
### Reproduce and compare
[Reproduce the Rillsoft SAP demo step by step](https://rillsoft.ai/en/developers/reproduce-sap-demo/) · [Check SAP maintenance workforce capacity with AI](https://rillsoft.ai/en/examples/sap-maintenance-order-capacity/)
### Sources and trademarks
Demo evidence: Rillsoft runs of 20 October 2026 for battery manufacturing, maintenance in plant 1010, line 26XR1 and four lines, each using Rillsoft Project 10.0.626. This guide was compiled from that evidence on 22 October 2026; the figures were confirmed on 24 October 2026 in the free prompt run (German and English, through to the report).
This example uses the MCP Gateway in SAP Integration Suite, which SAP describes as its intended access path for external AI agents connecting to SAP systems. The [SAP API Policy](https://help.sap.com/doc/sap-api-policy/latest/en-US/API_Policy_latest.pdf), particularly section 2.2.2, and the terms and access restrictions of the services used still apply. The demo only reads sandbox data and does not write changes back to SAP.
SAP, SAP S/4HANA, SAP BTP and SAP Integration Suite are trademarks or registered trademarks of SAP SE or its affiliates in Germany and in other countries. This guide is published by Rillsoft GmbH and does not represent SAP certification or partnership.
Back to [Connect Rillsoft Project to SAP](https://rillsoft.ai/en/developers/connect-rillsoft-project-to-sap/).
## 5. Check SAP maintenance workforce capacity with AI
30 maintenance orders result in 117 operations. RES-0100 needs only 98.6 of 765 available hours overall. Nevertheless, two hourly buckets have a combined staff-capacity shortfall of 24.3 hours; daily totals hide this gap.
Verification scope: Rillsoft Project 10.0.626, SAP S/4HANA Cloud sandbox via the MCP Gateway. iFlow import checked on 22 October 2026; packaged scenarios, SAP connection, reconciliation and restoration rechecked on 23 October 2026; free prompt run in German and English through to the report passed on 24 October 2026. A rebuild in a fresh environment with a new SAP account follows the publication; whatever it finds will be corrected.
### Source data and preparation
Prerequisites are [Connect SAP and Rillsoft in one AI client](https://rillsoft.ai/en/developers/connect-sap-rillsoft-client/) and the preparation in [Reproduce the Rillsoft SAP demo step by step](https://rillsoft.ai/en/developers/reproduce-sap-demo/).
**AI and you together:** choose production or maintenance. Confirm the plant, work centres, source period and any date shift; for production, also establish whether lines are interchangeable. Show the mapping before creating anything. Use a separate Rillsoft instance with a new, empty project and a **copy** of the resource pool. Obtain specific confirmation before discarding an open project or saving a file.
### Maintenance: people per operation and role
The six tools already include `MaintenanceOrder` and `MaintenanceOrderOperation`, work centres and capacities. No second gateway setup is needed. The tool screenshots in [Set up SAP MCP Gateway for Rillsoft](https://rillsoft.ai/en/developers/sap-mcp-gateway-setup/#6-mcp-server-and-policies) also show these two GET endpoints.
| SAP data | Rillsoft mapping |
|---|---|
| Maintenance order / operation | Subproject / task with original SAP dates in its notes |
| Work centre with staff capacity `002` | Role and team; headcount from `CapacityNumberOfCapacities` |
| Headcount without employee names | Placeholder people such as “RES-0100 Technician 01”; explicitly not employees read from SAP |
| People per operation `NumberOfCapacities` | Role demand with this quantity and 100% utilisation |
| Net duration and people | Occupied duration = SAP duration × factor; if duration is zero but work is positive, first use duration = work ÷ people |
| Shift and breaks | Calendar on team, people and task; factor per work centre from the median of comparable SAP dates |
| Operation sequence | Do not invent dependencies: `MaintOrderOpRelationship` is absent from the six tools; preserve SAP start dates |
The reference factors are **1.0625** for RES-0100 and AMS-100, and **1.0** for AMS-200. SAP schedules AMS-200 without a break allowance even though its capacity includes a break. Do not apply the battery formula to every case. The run creates ten placeholder people for RES-0100 and five each for AMS-100/AMS-200. RES works Monday–Friday 06:00–14:30; AMS works 08:00–16:30, without an additional break window.
Read `employee_capacity`, grouping `["role"]`, `display: "absolute"`, `capacity: true`, with the time filter and hourly scale. **Supply follows the people's calendars.** Unlike machines, staff do not need a report per project calendar. Demand includes the break allowance here; reverse it per task to reconcile net work.
**Subproject dates from their tasks:** a subproject created over MCP is fixed and keeps its finish – without `finish`, the finish of the project, even when its tasks end earlier. After creating all tasks, therefore read `rillsoft_project_tree_get` and set each subproject with `rillsoft_subproject_update`: `start` to the earliest and `finish` to the latest date of its tasks. This matches the subproject context command "Take over", which takes the dates from the activities; there is currently no MCP tool for that command. The task dates must not change.
### Rillsoft Project screenshots
Screenshots taken on 23 Oct 2026 from Rillsoft Project 10.0.626 (the test build), client area 1920 × 1080, effort in hours, time filter as stated; the numbers in the image belong to that view and may differ from the report totals in the table – each caption states where its number comes from.

*SAP maintenance order capacity analysis with AI – The first nine of 30 maintenance orders: each order consists of four short operations from 30 minutes to just over 17 hours, all at work center RES-0100, packed closely on 11, 12 and 13 Nov 2026 – the source of the hourly peak.*

*SAP maintenance order capacity analysis with AI – On 13 Nov 2026 between 10:00 and 12:00 the SAP dates require 11.9 and 32.5 persons out of ten available (highlighted), briefly up to 48 (chart). The shortfall column calculates at minute resolution and shows −31.92 hours for the time filter from 13 Nov; the example's hourly report gives 24.3 hours because it averages the peak over whole hours.*

*SAP maintenance order capacity analysis with AI – On the day scale the same day looks relaxed: 60.8 hours of demand on 13 Nov against ten technicians at 8.5 hours each. The daily total hides the hourly peak; only the highlighted cell and the shortfall column with −31.92 still reveal it.*
**Shortfall column and hourly report:** the program's column calculates at minute resolution and shows **31.92 h** for RES-0100 on 13 Nov 2026; the report on the hourly scale sums the same peak to **24.3 h** because it averages demand and supply per whole hour (recalculated from the operation dates on 23 Oct 2026: 31.92 h). Both figures describe the same bottleneck; the report states the scale it uses.
### Reference results and timescale
These figures refer to the **20 October 2026** retrieval. SAP may change its sandbox. Reference values are a comparison, never numbers for the AI to substitute into a different run.
| Check | Maintenance: staff |
| --- | ---: |
| Plant / period | 1010; SAP August 2022, shifted +222 weeks → 11–23 Nov 2026 |
| Orders / operations | 30 / 117 |
| Net reconciliation SAP / Rillsoft | 173.5 / 173.8 h work; tolerance 1.2 h |
| Dependencies | None; relationships absent from gateway |
| Occupied time or demand / supply | RES-0100 98.6 / 765 h |
| Shortfall: hour / day / week | RES-0100 24.3 / 0.0 / 0.0 h |
| Peak concurrent demand | RES-0100 up to 48 of 10 people; SAP dates: 39 |
| Other roles | AMS-200 37.0 h shortfall; AMS-100 0.0 h |
| Date comparison | 77 of 85 comparable operations finish as in SAP (±1 min) |
For maintenance, the capacity filter runs from 11 November 2026 00:00 to 24 November 2026 00:00. SAP gives 28 operations zero duration despite positive work; Rillsoft receives the calculated duration. This explains part of the increased simultaneous headcount and is not an unchanged transfer of dates.
**Shortfall = sum of positive differences between demand and supply in each time bucket.** Day and week allow spare time within their bucket to offset demand. Thus the 24.3 h staff shortage at RES-0100 disappears entirely in daily totals. Start with hours for detailed scheduling, then add day/week for an overview. Spare capacity in a weekly total does not establish a conflict-free schedule.
### Reconcile before reporting and restore the starting state
Compare task, order and dependency counts and net time or net work against SAP. Also check that the start and finish of every subproject equal the earliest start and latest finish of its tasks. Where Rillsoft duration includes a break allowance, reverse that factor per task before comparing net values. Document rounding and tolerance before judging the result: less than 0.05 h difference for batteries, at most 1.2 h for the maintenance reference. An excess or rejected dependency requires a discrepancy message, not a completed success report. Restore the view and original pool and verify restoration. Save project/pool files only to the confirmed destination.
### Frequently asked questions
#### Can Rillsoft plan staff from SAP maintenance orders?
Yes. The reference run transferred 117 operations from plant 1010 and assigned the people required per operation as role quantities. Despite only 13% overall utilisation, RES-0100 showed 24.3 hours of shortfall in two hourly buckets. Staff supply follows the people's calendars.
#### Where do the people come from if SAP provides only a headcount?
The 20 people in the reference pool are labelled placeholders: ten for RES-0100 and five each for AMS-100/AMS-200. Only headcounts and shifts come from SAP. Assigning actual employees requires a confirmed mapping to your own resource pool.
### Reproduce and compare
[Reproduce the Rillsoft SAP demo step by step](https://rillsoft.ai/en/developers/reproduce-sap-demo/) · [Check SAP production order capacity with AI](https://rillsoft.ai/en/examples/sap-production-order-capacity/)
### Sources and trademarks
Demo evidence: Rillsoft runs of 20 October 2026 for battery manufacturing, maintenance in plant 1010, line 26XR1 and four lines, each using Rillsoft Project 10.0.626. This guide was compiled from that evidence on 22 October 2026; the figures were confirmed on 24 October 2026 in the free prompt run (German and English, through to the report).
This example uses the MCP Gateway in SAP Integration Suite, which SAP describes as its intended access path for external AI agents connecting to SAP systems. The [SAP API Policy](https://help.sap.com/doc/sap-api-policy/latest/en-US/API_Policy_latest.pdf), particularly section 2.2.2, and the terms and access restrictions of the services used still apply. The demo only reads sandbox data and does not write changes back to SAP.
SAP, SAP S/4HANA, SAP BTP and SAP Integration Suite are trademarks or registered trademarks of SAP SE or its affiliates in Germany and in other countries. This guide is published by Rillsoft GmbH and does not represent SAP certification or partnership.
Back to [Connect Rillsoft Project to SAP](https://rillsoft.ai/en/developers/connect-rillsoft-project-to-sap/).
Steps and examples#
- Set up SAP MCP Gateway for Rillsoft
- Connect SAP and Rillsoft in one AI client
- Check SAP production order capacity with AI
- Check SAP maintenance workforce capacity with AI
Recognise and resolve errors#
| Message or observation | Resolution |
|---|---|
FailedToResolveAPIKey, Invalid ApiKey | Use Process Integration Runtime instead of Agent Subscription; check scopes. |
noCredentials | Check APIKey in the iFlow and its forwarding in Request Headers. |
response exceeded token limit | Check filtering; Groovy must prefix OData parameters with $. |
Invalid token detected at position 0, Resource not found for URI segment | Put the query only in Address; avoid double encoding through an API artifact. |
| HTTP 500 with MPL ID | Read Error Details; check field names, replace long OR lists with plant/period filtering. |
tools/list returns 0 instead of 6 | Add tools individually; check deployment and target path. |
| Pool switch rejected: new, unchanged project required | Create the project without a name, switch the pool, then name it. |
| Total duration rises to 2,503 instead of 2,449.15 h | Set the one-minute grid; do not round each task to hours. |
| Machine supply grows with double booking | Assign the machine type to the task; assign specific machines only without overlaps. |
| Night hours missing or supply does not match shift | Set the report’s project calendar to the machine type’s shift. |
| Successors move by hours | Use the break factor instead of a fixed break window; round occupied time to whole minutes. |
| Machine type assignment to milestone rejected | Keep zero duration without a machine type; set its date to the predecessor’s finish. |
| Session limit reached | Close your own MCP session with DELETE /mcp; preserve other sessions. If restarting, start Rillsoft before Claude. |
The German Rillsoft errors recorded in the source run include “nur bei einem neuen, unveränderten Projekt”, “Einem Meilenstein können keine Maschinenrollen zugewiesen werden” and “Sitzungsgrenze erreicht”. The English explanations above are translations, not claimed verbatim English runtime messages.
Frequently asked questions#
What does the test cost?#
The setup used SAP BTP Trial and sandbox. The SAP account, available trial services, Rillsoft trial and Claude access have separate terms. In particular, this guide does not cover an AI subscription. It does not promise that all components are free of charge.
Sources and trademarks#
Demo evidence: Rillsoft runs of 20 October 2026 for battery manufacturing, maintenance in plant 1010, line 26XR1 and four lines, each using Rillsoft Project 10.0.626. This guide was compiled from that evidence on 22 October 2026; the figures were confirmed on 24 October 2026 in the free prompt run (German and English, through to the report).
This example uses the MCP Gateway in SAP Integration Suite, which SAP describes as its intended access path for external AI agents connecting to SAP systems. The SAP API Policy, particularly section 2.2.2, and the terms and access restrictions of the services used still apply. The demo only reads sandbox data and does not write changes back to SAP.
SAP, SAP S/4HANA, SAP BTP and SAP Integration Suite are trademarks or registered trademarks of SAP SE or its affiliates in Germany and in other countries. This guide is published by Rillsoft GmbH and does not represent SAP certification or partnership.
Back to Connect Rillsoft Project to SAP.
- Product version
- Rillsoft Project 10.0.626; SAP Integration Suite Trial