LensReading which lens this session carries.
All contracts

CTR-S2P-SUITE · version 2

Source-to-Pay Suite — Purchase requisitions

Privacy approval carries a condition: the requester name must be pseudonymized before it reaches the spine, which the staging boundary now enforces.

RatifiedDrifted

What the contract says

These are the terms the connector is generated against. A source that stops matching them is a drift finding, not a silent data change.

Entity
Purchase requisition · bidirectional
Primary key
requisitionId + lineNumber
Declared volume
34,000 records a day
Freshness commitment
1 h
Owner
K. Boateng · Procurement Technology
Vendor
SAP Ariba · critical criticality · modeled
Cardinality
One requisition to many lines. One line to at most one purchase order line. A requisition line with two purchase order lines is a source defect and quarantines.
Write-back rule
Requisition creation and requisition cancellation are in scope. Award and contract signature are not, and the contract forbids them explicitly.

Review state

Neither review is performed by the team that wrote the contract.

Security reviewApproved
D. Contreras · Jul 23, 2026
Privacy reviewApproved with conditions
Maitre Olivier Lascaux · Jul 28, 2026

Validation and drift

Drift is only detectable on a contract that has been read against a sample.

Last validatedAug 12, 2026 · 6 d ago
8,000 records read in the sample.
The last sample found the supplier tax identifier arriving as a free-text string where the contract declares a structured type, and a new approval-delegate field present in the payload that the contract does not name. The connector fails loudly on both rather than mapping them by guess.

The field list

6 fields · 2 key · 2 personal. The validation rule on each row is what admits or rejects a record at the staging boundary.

FieldSourceTargetTypeFlagsDriftValidation
Requisition idBANFNrequisition.refstring(10)
keyinternal
In contractUnique. Reused numbers across company codes are a known source behavior and are namespaced on entry.
Line numberBNFPOrequisition.lineinteger
keyinternal
In contractPositive. Gaps are permitted; duplicates are not.
Supplier tax identifierSTCEGrequisition.supplierTaxIdstring(20)
nullableinternal
Type changed
Arriving as unvalidated free text in the last sample. Fifty-one of eight thousand rows carried a value the country format table rejects.
Structured by jurisdiction. Validated against the country format table before admission.
Requested byAFNAMrequisition.requesterHashstring(64)
personalconfidential
In contractPseudonymized at the boundary. This is the condition attached to the privacy approval.
Net valuePREISrequisition.netValuedecimal(15,2)
internal
In contractPositive. Must carry a currency or the line is quarantined.
Approval delegateZZDELEG(unmapped)string(12)
nullablepersonalconfidential
New and unmapped
Present in the source payload since a source release earlier this month. The connector refuses it rather than storing it, and the contract needs a version bump before it can be used.
Not declared in this version of the contract.

What has passed the staging boundary against this contract

2 batches · 12,200 arrived · 11,019 admitted · 1,181 quarantined · 0 rejected

BatchArrivedInAdmittedQuarantinedRejectedResultGate
STG-0004Aug 18, 08:006,2205,8393810Partly admitted5,839 admitted · 381 quarantined · 0 rejected outright.
STG-0005Aug 18, 07:005,9805,1808000Partly admitted5,180 admitted · 800 quarantined · 0 rejected outright.

Rejects raised against these batches

4 reasons covering 1,181 records. Each one names a field, what was observed and what the contract expected.

Supplier tax identifier arrived as a structure310 records · 1 h oldContract change proposed
Observed: An object with country and value keys
Expected: A string
STG-0004 · field supplierTaxId · queue quarantine · K. Boateng
Counterparty not matched to the supplier master71 records · 1 h oldOwner assigned
Observed: Free-text counterparty names on 71 lines
Expected: An active supplier record
STG-0004 · field supplierId · queue quarantine · K. Boateng
Supplier tax identifier arrived as a structure288 records · 2 h oldContract change proposed
Observed: An object with country and value keys
Expected: A string
STG-0005 · field supplierTaxId · queue quarantine · K. Boateng
Approval delegate field is not in the contract512 records · 2 h oldContract change proposed
Observed: A populated field the contract does not declare
Expected: Nothing. The field is unmapped
STG-0005 · field approvalDelegate · queue quarantine · K. Boateng

Replay windows

1 window recorded against this contract.

RPL-003Completed
Contract change · Jul 27, 2026 to Aug 3, 2026
The supplier tax identifier changed type at the source. The week was re-read against the amended mapping to see what the old mapping had dropped.
26,410 replayed · 25,902 held at the idempotence key · 0 duplicates created

Write-back routes into this system

2 routes designed against Source-to-Pay Suite.

approve-and-release · RequisitionDesigned, never live
WB-S2P-01 · agent · authority PR8-AUTH-A1 · policy PR8-POL-200
3 attempted · 0 written to a production system
update-tax-identifier · Supplier recordRefused by policy
WB-S2P-02 · agent · authority PR6-AUTH-A1 · policy GB8-POL-200
2 attempted · 0 written to a production system

What goes stale when this feed does

5 asserted figures depend on Source-to-Pay Suite. The rule on each row is what the surface does when the feed misses its commitment.

FigureWhere it is shownRoleOn staleNote
Open purchase order commitmentReconciliation ledger REC-02contributingMark it staleRequisition and award records explain the movement in the balance but do not set it.
Touchless processing rateAI GBS towerscontributingMark it staleRequisition-side touchless volume is folded into the same rate.
Active supplier recordsProcurement cockpitprimarySuppress the figureThe supplier master is the source. A stale read shows suppliers that have already been blocked.
Units held in intake quarantineIntake qualitycontributingMark it staleRequisition-side holds are the second largest group.
Work units under managementSubway map, function cockpitcontributingMark it staleRequisition and invoice work units arrive on this feed.
What this contract is, and what it is not

A contract, a validation rule, a freshness commitment and a replay path are real mechanisms and they are what this wave builds. What they are not is a connection. No connector on this estate is attached to a customer instance, so every batch, every replay and every write-back attempt recorded here ran against a modeled extract or a sandbox, and the registry keeps saying modeled.

The last validation read 8,000 records 6 days ago, which is 24% of a single day at the declared volume. A sample proves the shape of what it read and nothing beyond it.