Skip to main content
Glama
dnic-dev

bw-modeling-mcp

by dnic-dev

bw_create_process_chain

Create a BW/4HANA process chain by defining steps and edges; the tool builds the model with an implicit trigger, collectors, DTP loads, activations, ABAP programs, decisions, and sub-chains, with optional activation.

Instructions

Create a Process Chain (RSPC) via the BW/4HANA Cockpit REST API. Builds the chain model from a list of steps and edges, creates it with a trigger-only skeleton, then updates it with the full model in a single operation. Optionally activates after creation. The TRIGGER (Start) node is implicit (node index 0) and must not be listed in steps. DTP_LOAD and generic referenced steps use bIsReference=true; ADSOACT and ADSOREM use inline variants. Collectors (AND, OR, XOR) require no extra fields beyond their type. Edge status defaults: neutral for edges whose source is TRIGGER or a collector; positive for all others. For two-step DTP loading always use bw_create_dtp first; this tool builds the process chain around existing DTPs. Supported step types: DTP_LOAD (DTP load), ADSOACT (DSO data activation), ADSOREM (DSO request cleanup), ABAP (execute an ABAP program, optionally with an SE38 selection variant), CHAIN (start a local sub-chain, verified), DECISION (branch on a decision variant, requires the variant field), and collectors AND / OR / XOR; the start trigger is implicit. A generic referenced-step path (any process type string plus an object name, bIsReference=true) is available and verified for DTP_LOAD and CHAIN; for other types it may work but is untested. Other inline-configuration process types (for example OS command, attribute change run) are not supported in this version. Edges support on-success (positive) and unconditional (neutral) links; on-error (negative) links are accepted in the schema but not emitted by default. DECISION branch edges: set sub_status to the branch EVENTNO ("01"=THEN/JA, "02"=ELSE/NEIN) — such edges are always positive. Create the referenced decision variant first with bw_create_decision_variant. To start the chain on an event instead of immediately, pass trigger_event (start type "E").

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesProcess chain technical name, uppercase, max 30 characters (e.g. "CHAIN_NAME").
edgesYesDirected edges connecting steps. Use the step id or the literal "TRIGGER" for the start node. Status defaults: "neutral" when the source is "TRIGGER" or a collector (AND/OR/XOR); "positive" otherwise. For a branch edge out of a DECISION node, set sub_status to the branch EVENTNO ("01"/"02"); such edges are forced to "positive".
stepsYesOrdered list of steps. The TRIGGER (Start) node is implicit at index 0 — do not include it here. Each step has a caller-chosen id used for edge wiring. Step types: DTP_LOAD (requires dtp field), ADSOACT (requires datastores array), ADSOREM (requires remDatastores array), ABAP (requires program field, optional program_variant), CHAIN (requires object = sub-chain name), DECISION (requires variant = decision variant name), AND / OR / XOR (collector, no extra fields), or any other BW process type (requires object field).
activateNoIf true, activate the chain immediately after creation. Default false.
infoareaYesInfoArea to file the chain under (e.g. "AREA_NAME").
descriptionYesShort description / label for the process chain.
trigger_eventNoOptional event start-condition for the trigger (start type "E"). Omit for the default immediate start (start type "I").

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed10 schema fields changedv1.4.0
    • changedInput schema / properties / steps / description
      Previous value: -"Ordered list of steps. The TRIGGER (Start) node is implicit at index 0 — do not include it here. Each step has a caller-chosen id used for edge wiring. Step types: DTP_LOAD (requires dtp field), ADSOACT (requires datastores array), ADSOREM (requires remDatastores array), CHAIN (requires object = sub-chain name), DECISION (requires variant = decision variant name), AND / OR / XOR (collector, no extra fields), or any other BW process type (requires object field)."New value: +"Ordered list of steps. The TRIGGER (Start) node is implicit at index 0 — do not include it here. Each step has a caller-chosen id used for edge wiring. Step types: DTP_LOAD (requires dtp field), ADSOACT (requires datastores array), ADSOREM (requires remDatastores array), ABAP (requires program field, optional program_variant), CHAIN (requires object = sub-chain name), DECISION (requires variant = decision variant name), AND / OR / XOR (collector, no extra fields), or any other BW process type (requires object field)."
    • addedInput schema / properties / steps / items / properties / local
      Added value: +{
      +  "description": "ABAP only. Call location. true (default) runs the program on this system (X_LOCAL). Only the default is verified.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / steps / items / properties / object / description
      Previous value: -"Technical name of the referenced BW object. Required for CHAIN (sub-chain name) and other generic referenced step types (any type other than DTP_LOAD, ADSOACT, ADSOREM, AND, OR, XOR)."New value: +"Technical name of the referenced BW object. Required for CHAIN (sub-chain name) and other generic referenced step types (any type other than DTP_LOAD, ADSOACT, ADSOREM, ABAP, AND, OR, XOR)."
    • addedInput schema / properties / steps / items / properties / program
      Added value: +{
      +  "description": "ABAP program / report to execute (e.g. \"REPORT_NAME\"). Required when type is \"ABAP\". The call is stored as an inline variant in the chain — no separate variant object is created.",
      +  "type": "string"
      +}
    • addedInput schema / properties / steps / items / properties / program_description
      Added value: +{
      +  "description": "ABAP only. Optional report description (cosmetic).",
      +  "type": "string"
      +}
    • addedInput schema / properties / steps / items / properties / program_package
      Added value: +{
      +  "description": "ABAP only. Optional package of the report (cosmetic value-help enrichment; the server re-derives it when omitted).",
      +  "type": "string"
      +}
    • addedInput schema / properties / steps / items / properties / program_variant
      Added value: +{
      +  "description": "ABAP only. Optional ABAP report (SE38) selection variant name (e.g. \"VARIANT_NAME\"). Note this is a report variant, not the DECISION variant field above.",
      +  "type": "string"
      +}
    • addedInput schema / properties / steps / items / properties / synchronous
      Added value: +{
      +  "description": "ABAP only. Call mode. true (default) runs the program synchronously (X_SYNCHRON). Only the default is verified.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / steps / items / properties / type / description
      Previous value: -"Process type: \"DTP_LOAD\", \"ADSOACT\", \"ADSOREM\", \"CHAIN\", \"DECISION\", \"AND\", \"OR\", \"XOR\", or any BW process type string."New value: +"Process type: \"DTP_LOAD\", \"ADSOACT\", \"ADSOREM\", \"ABAP\", \"CHAIN\", \"DECISION\", \"AND\", \"OR\", \"XOR\", or any BW process type string."
    • addedInput schema / properties / steps / items / properties / variant_description
      Added value: +{
      +  "description": "ABAP only. Optional report-variant description (cosmetic).",
      +  "type": "string"
      +}
  2. Changed9 schema fields changedv1.2.0
    • changedInput schema / properties / edges / description
      Previous value: -"Directed edges connecting steps. Use the step id or the literal \"TRIGGER\" for the start node. Status defaults: \"neutral\" when the source is \"TRIGGER\" or a collector (AND/OR/XOR); \"positive\" otherwise."New value: +"Directed edges connecting steps. Use the step id or the literal \"TRIGGER\" for the start node. Status defaults: \"neutral\" when the source is \"TRIGGER\" or a collector (AND/OR/XOR); \"positive\" otherwise. For a branch edge out of a DECISION node, set sub_status to the branch EVENTNO (\"01\"/\"02\"); such edges are forced to \"positive\"."
    • addedInput schema / properties / edges / items / properties / sub_status
      Added value: +{
      +  "description": "Branch condition (DECISION out-edges only): the branch EVENTNO, e.g. \"01\" (THEN/JA) or \"02\" (ELSE/NEIN). Defaults to \"00\" (normal edge).",
      +  "type": "string"
      +}
    • changedInput schema / properties / steps / description
      Previous value: -"Ordered list of steps. The TRIGGER (Start) node is implicit at index 0 — do not include it here. Each step has a caller-chosen id used for edge wiring. Step types: DTP_LOAD (requires dtp field), ADSOACT (requires datastores array), CHAIN (requires object = sub-chain name), AND / OR / XOR (collector, no extra fields), or any other BW process type (requires object field)."New value: +"Ordered list of steps. The TRIGGER (Start) node is implicit at index 0 — do not include it here. Each step has a caller-chosen id used for edge wiring. Step types: DTP_LOAD (requires dtp field), ADSOACT (requires datastores array), ADSOREM (requires remDatastores array), CHAIN (requires object = sub-chain name), DECISION (requires variant = decision variant name), AND / OR / XOR (collector, no extra fields), or any other BW process type (requires object field)."
    • changedInput schema / properties / steps / items / properties / description / description
      Previous value: -"Step display description (used for DTP_LOAD, CHAIN, and generic referenced steps)."New value: +"Step display description (used for DTP_LOAD, CHAIN, DECISION, and generic referenced steps)."
    • changedInput schema / properties / steps / items / properties / object / description
      Previous value: -"Technical name of the referenced BW object. Required for CHAIN (sub-chain name) and other generic referenced step types (any type other than DTP_LOAD, ADSOACT, AND, OR, XOR)."New value: +"Technical name of the referenced BW object. Required for CHAIN (sub-chain name) and other generic referenced step types (any type other than DTP_LOAD, ADSOACT, ADSOREM, AND, OR, XOR)."
    • addedInput schema / properties / steps / items / properties / remDatastores
      Added value: +{
      +  "description": "Required when type is \"ADSOREM\" (DSO request cleanup). One entry per aDSO whose requests to clean up, each with its own cleanup action and request selection.",
      +  "items": {
      +    "properties": {
      +      "action": {
      +        "description": "Cleanup action code from the cockpit \"Bereinigungsaktion\" dropdown (single character). Observed: \"A\" = activate requests, \"C\" = remove old requests from the change log. The valid action depends on the aDSO type; an unsuitable action is rejected at activation.",
      +        "type": "string"
      +      },
      +      "allRequests": {
      +        "description": "Clean up all requests (ALL_REQUESTS). When true, the count/age selectors are ignored. Default false.",
      +        "type": "boolean"
      +      },
      +      "datastore": {
      +        "description": "aDSO technical name (e.g. \"ADSO_NAME\").",
      +        "type": "string"
      +      },
      +      "numberDays": {
      +        "description": "Remove requests older than N days (NUMBER_DAYS). Default 0.",
      +        "type": "number"
      +      },
      +      "numberRequests": {
      +        "description": "Keep the last N requests (NUMBER_REQUESTS); older ones are removed. Default 0.",
      +        "type": "number"
      +      },
      +      "packageSize": {
      +        "description": "Processing package size (PACKAGE_SIZE); 0 = server default.",
      +        "type": "number"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / steps / items / properties / type / description
      Previous value: -"Process type: \"DTP_LOAD\", \"ADSOACT\", \"CHAIN\", \"AND\", \"OR\", \"XOR\", or any BW process type string."New value: +"Process type: \"DTP_LOAD\", \"ADSOACT\", \"ADSOREM\", \"CHAIN\", \"DECISION\", \"AND\", \"OR\", \"XOR\", or any BW process type string."
    • addedInput schema / properties / steps / items / properties / variant
      Added value: +{
      +  "description": "Decision variant technical name to reference. Required when type is \"DECISION\". Create it first with bw_create_decision_variant.",
      +  "type": "string"
      +}
    • addedInput schema / properties / trigger_event
      Added value: +{
      +  "description": "Optional event start-condition for the trigger (start type \"E\"). Omit for the default immediate start (start type \"I\").",
      +  "properties": {
      +    "event_id": {
      +      "description": "Event id, e.g. \"SAP_TEST\".",
      +      "type": "string"
      +    },
      +    "event_parameter": {
      +      "description": "Event parameter. Defaults to the chain name when omitted.",
      +      "type": "string"
      +    },
      +    "event_type": {
      +      "description": "Event type. Defaults to \"OtherEvent\".",
      +      "type": "string"
      +    },
      +    "only_once": {
      +      "description": "Start only once. Default false.",
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "event_id"
      +  ],
      +  "type": "object"
      +}
  3. Addedv0.9.1

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It fully discloses the skeleton-then-update mechanism, the implicit TRIGGER node, edge status defaults, the non-emission of negative edges by default, DECISION branch semantics, and which generic reference paths are verified versus untested.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but all content earns its place for such a complex, multi-typed tool. It opens with the core operation and then methodically covers step types, edges, defaults, and use-before prerequisites without filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description, along with the rich schema, gives an agent everything required to construct a valid call: how to compose steps and edges, which fields are needed per step type, default edge conditions, decision-variant prerequisites, and start/activation options. The absence of an output schema does not create a serious gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description still adds substantial meaning: implicit TRIGGER index 0, per-step field requirements, edge status defaults, sub_status semantics, the bw_create_dtp relationship, and verified/untested step-type behavior. This goes well beyond the schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action — creating a Process Chain (RSPC) — and explains the exact operation: build from steps and edges, create a trigger-only skeleton, then update with the full model. It clearly distinguishes this from sibling mutation/editing tools such as bw_update_process_chain and bw_add_process_chain_edge.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use bw_create_dtp first for two-step DTP loading and to use bw_create_decision_variant before referencing DECISION variants. It also marks verified vs untested paths and unsupported process types. However, it does not explicitly name sibling alternatives for modifying an already-created chain.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dnic-dev/bw-modeling-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server