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.
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.
Review state
Neither review is performed by the team that wrote the contract.
Validation and drift
Drift is only detectable on a contract that has been read against a sample.
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.
| Field | Source | Target | Type | Flags | Drift | Validation |
|---|---|---|---|---|---|---|
| Requisition id | BANFN | requisition.ref | string(10) | keyinternal | In contract | Unique. Reused numbers across company codes are a known source behavior and are namespaced on entry. |
| Line number | BNFPO | requisition.line | integer | keyinternal | In contract | Positive. Gaps are permitted; duplicates are not. |
| Supplier tax identifier | STCEG | requisition.supplierTaxId | string(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 by | AFNAM | requisition.requesterHash | string(64) | personalconfidential | In contract | Pseudonymized at the boundary. This is the condition attached to the privacy approval. |
| Net value | PREIS | requisition.netValue | decimal(15,2) | internal | In contract | Positive. Must carry a currency or the line is quarantined. |
| Approval delegate | ZZDELEG | (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
| Batch | Arrived | In | Admitted | Quarantined | Rejected | Result | Gate |
|---|---|---|---|---|---|---|---|
| STG-0004 | Aug 18, 08:00 | 6,220 | 5,839 | 381 | 0 | Partly admitted | 5,839 admitted · 381 quarantined · 0 rejected outright. |
| STG-0005 | Aug 18, 07:00 | 5,980 | 5,180 | 800 | 0 | Partly admitted | 5,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.
Replay windows
1 window recorded against this contract.
Write-back routes into this system
2 routes designed against Source-to-Pay Suite.
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.
| Figure | Where it is shown | Role | On stale | Note |
|---|---|---|---|---|
| Open purchase order commitment | Reconciliation ledger REC-02 | contributing | Mark it stale | Requisition and award records explain the movement in the balance but do not set it. |
| Touchless processing rate | AI GBS towers | contributing | Mark it stale | Requisition-side touchless volume is folded into the same rate. |
| Active supplier records | Procurement cockpit | primary | Suppress the figure | The supplier master is the source. A stale read shows suppliers that have already been blocked. |
| Units held in intake quarantine | Intake quality | contributing | Mark it stale | Requisition-side holds are the second largest group. |
| Work units under management | Subway map, function cockpit | contributing | Mark it stale | Requisition and invoice work units arrive on this feed. |
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.