Dual-gate governance for SAP ERP actions — state admission (completeness, budget, vendor, cost center) and execution authority (role, segregation of duties, regional holds, payment thresholds) before they execute.
Highest priority first. The first rule whose conditions all hold decides; with none, the decision is a REVIEW.
exec-duplicate-payment · *
AUTO_REJECT → REJECT · urgent
A prior payment with the same vendor + amount fingerprint was found.
state-required-fields · *
AUTO_REJECT → REJECT · urgent
PO state is incomplete; required fields must be present before admission.
exec-authorized-role · *
AUTO_REJECT → REJECT · urgent
Actor role is not authorized for governed SAP execution.
state-amount-valid · *
AUTO_REJECT → REJECT · urgent
Purchase order amount must be a positive numeric value.
exec-segregation-of-duties · *
AUTO_REJECT → REJECT · urgent
Segregation-of-duties check failed because requester and approver match.
state-within-budget · *
AUTO_REJECT → REJECT · urgent
Purchase order amount exceeds the approved budget on the SAP state.
state-vendor-verified · *
AUTO_REJECT → REJECT · urgent
Vendor is not verified for governed purchase order execution.
state-cost-center-valid · *
AUTO_REJECT → REJECT · urgent
Cost center is invalid or not eligible for this purchase order.
exec-three-way-match · *
REQUIRE_REVIEW → REVIEW · elevated · SLA 120 min
Goods receipt does not confirm the invoiced quantity/amount; hold payment until the PO, goods receipt, and invoice reconcile.
exec-regional-hold · *
REQUIRE_REVIEW → REVIEW · elevated · SLA 60 min
Regional constraint requires a revisit trigger before SAP execution.
exec-treasury-threshold · *
ESCALATE → ESCALATE · urgent · SLA 10 min
PO amount exceeds threshold and Treasury Head approval is missing.
state-admit-default · *
AUTO_APPROVE → APPROVE
SAP proposed state is complete, non-conflicting, and eligible for execution review.
exec-authorize-default · *
AUTO_APPROVE → APPROVE
Execution authority is present for the proposed SAP action.
Locally, with @decionis/mcp: the payload becomes the request's context, and its action the decision type. On the hosted protocol, once the bundle is stored for your organization, name vertical_pack, policy_version and require_exact_policy_version: true.
decionis_evaluate arguments
{ "policy_pack": "sap", "payload": { "action": "<decision type>" } }In a hosted evaluate-decision request
"vertical_pack": "sap",
"policy_version": "sap-procurement-v2",
"require_exact_policy_version": trueEvery fact below comes from the request's context.