Jose Antonio Alvarez

Integration · platform · assurance

Nothing threw an error. Three documents are gone.

The same failure wears different clothes: a document that never arrived, a query that crossed a tenant boundary, a job that ran and did nothing. None of them raised an error. This is a register of thirty, and how to catch each one.

A release chain reporting success while losing documents Documents leave a source and travel to a ledger. Three peel away into a dead-letter path and never arrive. Every hop still reports success, and the ledger ends short. dead letters no error raised source 1,284 sent queue accepts ledger 1,281
Illustrative — the shape of the failure, not a measurement.

Navigate by where it breaks

A request reports success four times on its way through. Each of these is one of them, and what that report can be hiding.

  1. DGateallowedno rule matched, so it allowed
  2. ACallsucceedednothing came back, so it succeeded
  3. BSyncsyncedzero rows came back, so it emptied
  4. CAuditrecordedwritten after the act, or not at all

True wherever you are on that path

Or by what you are seeing

Each symptom reaches across several domains — the bars are how many of the 30 checks it pulls in. Pick one.

A · 4 entries

Interface contracts

What the remote system told you, and what your code decided it meant.

A-01

Silence read as success

An empty return table is equally true of a call that did nothing.

TestPoint the interface at a target that accepts and discards the payload.

A-02

Line answers to a whole-document question

Header-grain release has no per-line outcome to report.

TestRelease a document with one bad line and read the result.

A-03

Booked twice by a retry

The acknowledgement was lost, not the commit.

TestKill the connection after the remote commit but before your side records it.

A-04

The commit outlived its confirmation

Both sides are consistent and disagree with each other.

TestAsk who reconciles the two counts, and on what schedule.

B · 4 entries

Sync, delta and cut-off

What happens between two cycles.

B-01

Empty snapshot, emptied queue

Zero rows was read as "nothing exists".

TestStub the source to return an empty set once.

B-02

The watermark moved anyway

The cursor advanced after the read, not after the write.

TestForce a write failure mid-cycle, then re-run.

B-03

Deletions never travel

The feed publishes what changed, not what left.

TestDelete a record at source, run the delta, look downstream.

B-04

Coercion at the merge boundary

X is not a string and 00000000 is not a date.

TestFeed one row of each SAP-blank convention through the merge.

C · 4 entries

Evidence and audit

Whether the record could survive being doubted.

C-01

Tamper-evident until somebody tries

The key lives in the database the log is in.

TestEdit one historical row directly, then run your verifier.

C-02

Audited after the point of no return

The action exists and the record does not.

TestMake the audit write fail right after a successful release.

C-03

Truncation the chain cannot see

Hash-linking detects edits, not deletions.

TestDelete the last three rows and re-verify.

C-04

Your export runs on their machine

A leading = is a formula, not a value.

TestPut =1+1 in a free-text field and open the export.

D · 4 entries

Authorisation and segregation

What happens to a request you have no rule for.

D-01

Unmatched means allowed

Every gap in the rule set is a grant.

TestAsk for a permission code that exists nowhere in your configuration.

D-02

“Manage” quietly implies “read”

One verb silently contains another.

TestGrant exactly one verb, then enumerate what the account reaches.

D-03

No approval rule means approved

An empty rule set evaluated to nothing to wait for.

TestCreate a scope with no approval rules and submit something expensive.

D-04

The button is hidden, the endpoint is not

Separation of duties in the view layer is a convention.

TestCall the approval endpoint directly as the requester.

E · 4 entries

Multi-tenant isolation

Whether one customer can reach another.

E-01

The boundary sits in the wrong layer

One query the author forgot returns another customer’s rows.

TestRun a query with no tenant predicate as the application user.

E-02

Connected as the role the policy ignores

The application owns the table, so the policy never runs.

TestCheck the role the app connects as, not the one in the runbook.

E-03

The id is the whole authorisation

Scope is enforced by nobody guessing the number.

TestRequest an id belonging to another tenant, directly.

E-04

Filtered leaving, trusted arriving

Reads are scoped; writes take an id and believe it.

TestCall every write path with an id from outside your scope.

F · 4 entries

Realtime and eventing

The connections that never touch the request path.

F-01

The page is locked, the socket is not

Authentication was applied to routes; a socket is not a route.

TestConnect to the hub with no cookie and no token, then subscribe.

F-02

At-least-once read as exactly-once

Redelivery is a guarantee, not an anomaly.

TestReplay one message the consumer has already handled.

F-03

Ordering assumed across partitions

Order holds inside a partition and nowhere else.

TestPublish a create and its update to different partitions.

F-04

Failures land where nobody looks

Capture without a reader is not handling.

TestAsk what the queue depth is and who is paged when it grows.

G · 4 entries

Autonomous execution

Work that runs with nobody watching.

G-01

The run reports on itself

The verdict was synthesised, not read back.

TestDisable the work and leave the reporting path intact.

G-02

Isolated from the host, not the network

Separate kernel, open route.

TestFrom inside the sandbox, reach an internal service.

G-03

Credentials scoped to the platform

One identity holding the union of every permission.

TestEnumerate what the token the task receives can reach.

G-04

A result with no inputs

No pinned revision, so it cannot be re-run.

TestRebuild a completed job from its stored record alone.

H · 2 entries

Observability

Whether the green light is in a position to know.

H-01

Green proves it started

The scheduler fired; execution is not what is measured.

TestDisable the executor and leave the scheduler running.

H-02

Healthy because it answered

It opened no connection and read no row.

TestStop the dependency, not the app.

Thirty checks. No client work.

Every entry is published in vendor documentation, reproducible on a system you own, or something I broke myself. Nothing from an engagement appears here, and nothing will.

Workday Pro — IntegrationsWorkday
Workday Pro — StudioWorkday
Workday Pro — ExtendWorkday
Jose Antonio Alvarez info@alvarezfitz.com SAP integration assurance