LensReading which lens this session carries.
All contracts

CTR-ERP-FI · version 2

Group ERP — Financials — Journal lines

The load-bearing contract of the estate. Cost per transaction, the benefit ledger and every cost-to-serve figure resolve back to this feed.

RatifiedIn contract

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
Journal line · bidirectional
Primary key
companyCode + documentNumber + fiscalYear + lineItem
Declared volume
148,000 records a day
Freshness commitment
1 h
Owner
D. Halvorsen · Finance Systems
Vendor
SAP S/4HANA · critical criticality · modeled
Cardinality
One document header carries many lines. Every line resolves to exactly one cost center and one GL account. A line is never split across cost centers.
Write-back rule
Park only, never post. The connector may create a parked journal and attach the agent authority reference; the posting itself stays with a qualified accountant inside the source application.

Review state

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

Security reviewApproved
R. Osei · Aug 6, 2026
Privacy reviewApproved
Helena Marsh · Aug 9, 2026

Validation and drift

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

Last validatedAug 7, 2026 · 11 d ago
25,000 records read in the sample.
Validated against a 25,000-line extract taken from the finance sandbox. Every field matched declared type and cardinality.

The field list

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

FieldSourceTargetTypeFlagsDriftValidation
Document numberBKPF-BELNRledgerEntry.documentRefstring(10)
keyinternal
In contractNumeric, exactly ten characters, left-padded. Rejected if the year prefix is outside the open period.
Company codeBKPF-BUKRSledgerEntry.entityCodestring(4)
keyinternal
In contractMust resolve to a row in the estate register. An unknown company code quarantines the whole document, not the line.
GL accountBSEG-HKONTledgerEntry.glAccountstring(10)
internal
In contractMust exist in the GL account table and be open for posting.
Amount in local currencyBSEG-DMBTRledgerEntry.amountLocaldecimal(15,2)
confidential
In contractSigned. Document debits and credits must net to zero or the batch is held.
Cost centerBSEG-KOSTLledgerEntry.costCenterstring(10)
nullableinternal
In contractNull is permitted on balance-sheet accounts only. Null on a P&L account is a contract violation.
Entered byBKPF-USNAMledgerEntry.enteredBystring(12)
personalconfidential
In contractPseudonymized at the staging boundary. The clear value never enters the spine; only the hash is stored.
Posting dateBKPF-BUDATledgerEntry.postedOndate
internal
In contractMust fall inside the declared extract window. A date outside the window means a late arrival and triggers a replay rather than an insert.

What has passed the staging boundary against this contract

2 batches · 28,725 arrived · 28,165 admitted · 560 quarantined · 0 rejected

BatchArrivedInAdmittedQuarantinedRejectedResultGate
STG-0001Aug 18, 08:0014,82014,5183020Partly admitted14,518 admitted · 302 quarantined · 0 rejected outright.
STG-0002Aug 18, 07:0013,90513,6472580Partly admitted13,647 admitted · 258 quarantined · 0 rejected outright.

Rejects raised against these batches

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

Company code not in the estate register214 records · 1 h oldOwner assigned
Observed: 4 codes, 2 of them recently created at the source
Expected: A code already present in the estate register
STG-0001 · field companyCode · queue quarantine · D. Halvorsen
General ledger account closed for posting88 records · 1 h oldOpen, no owner
Observed: 11 accounts closed at period end
Expected: An account open for posting
STG-0001 · field glAccount · queue quarantine · no owner assigned
Company code not in the estate register197 records · 2 h oldOwner assigned
Observed: The same 2 new codes as the previous batch
Expected: A code already present in the estate register
STG-0002 · field companyCode · queue quarantine · D. Halvorsen
Document date outside the declared extract window61 records · 2 h oldFix at source
Observed: Dates up to 4 days before the window opens
Expected: Inside the declared extract window
STG-0002 · field postingDate · queue quarantine · D. Halvorsen

Replay windows

1 window recorded against this contract.

RPL-001Completed
Late arriving · Jul 15, 2026 to Jul 18, 2026
Three days of postings from two European company codes arrived after the extract window had closed.
41,820 replayed · 41,820 held at the idempotence key · 0 duplicates created

Write-back routes into this system

2 routes designed against Group ERP — Financials.

post-accrual · Journal entryDesigned, never live
WB-ERP-FI-01 · agent · authority FI4-AUTH-A1 · policy FI4-POL-200
3 attempted · 0 written to a production system
set-payment-block · Vendor lineBlocked
WB-ERP-FI-02 · agent · authority FI5-AUTH-A1 · policy FI5-POL-200
1 attempted · 0 written to a production system

What goes stale when this feed does

6 asserted figures depend on Group ERP — Financials. The rule on each row is what the surface does when the feed misses its commitment.

FigureWhere it is shownRoleOn staleNote
Transactions processed each weekAI GBS towerscontributingMark it staleFinance postings are one of the twelve tower streams. A stale ledger understates the count.
Supplier invoice value clearedReconciliation ledger REC-01primarySuppress the figureThe cleared value is the ledger side of the reconciliation. A stale ledger makes the break count meaningless, so the ledger row is held.
Cost per transactionAI GBS towersprimaryMark it staleThe cost numerator is a ledger read. The figure survives a stale ledger for a day; after that it is wrong at the second decimal.
Reconciliation breaks openReconciliation ledgerprimaryMark it staleA break is the difference between two reads. A stale ledger read manufactures breaks that do not exist.
Reconciliation breaks with no ownerReconciliation ledgerprimaryMark it staleOwnership is assigned when the break is raised, so the figure inherits the staleness of the read that raised it.
Group cash positionFinance cockpitcontributingMark it staleBook cash reconciles against the ledger but does not set the position.
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 25,000 records 11 days ago, which is 17% of a single day at the declared volume. A sample proves the shape of what it read and nothing beyond it.