Reporting late or wrong is not a missed milestone. It is a breach: penalties, mandated remediation, re-reporting. And over-reporting counts too — submitting trades that were never in scope is equally a breach.
I came onto this from process and operations work, not derivatives. The derivatives knowledge had to be learned. The method did not.
Five that carried the most consequence, each with an acceptance criterion attached the day it was written.
Described by function rather than product name. What matters is not what the systems are called, but that there are four places a value can change between booking and the regulator.
Two things decide whether a regulatory report is right. Whether the trade should be in the population at all, and whether each value survives the journey. Here is one of each, in full.
Question four is the one people skip. An exclusion that applies but was never documented looks identical, in a review, to a trade that was missed. The evidence is the deliverable, not the decision.
Both counterparties must submit the same UTI, and the repository uses it to pair the two sides. If they do not match, one trade looks like two unrelated one-sided reports.
Three of those four announce themselves. A reformatted identifier does not. It is well-formed, passes every check, gets accepted, and simply never pairs. It surfaces in a reconciliation weeks later, by which point the whole population has it.
So the test could not stop at a successful submission. Accepted, paired and stable across the lifecycle are three separate assertions, and only the first is easy.
Each diagram below is the working, redrawn for this page. All of them describe method rather than proprietary design.
The value is in the order. The acceptance criterion is written with the requirement, not after the build — otherwise the test becomes a description of whatever got delivered.
Each category fails differently. The bottom row generates the most defects: a conditional field is only tested when someone deliberately constructs the condition, and if nobody does, production constructs it for you.
A source-system test passing tells you the source system works. It tells you nothing about what the regulator will receive.
“It does not work” is a handover of confusion, not a defect. Tracing it first turns it into a decision, addressed to whoever can act. Priority is set by regulatory impact, not by volume of complaint.
New trades are a design problem. Legacy records cannot be re-booked, so each attribute needed a decision: migrate, derive, or correct and re-report. The regulator publishes a section on this, which tells you clean migration is the exception.
The expected constraint is engineering capacity. The real one was Operations, still running the desk. Their hours were finite and non-renewable, which made test sequencing a project-management decision rather than a testing one.
Every one of these six is the same discipline applied at a different altitude: do not accept a statement you have not traced. Not the rule, not the mapping, not the passing test, not the defect report, not the plan. In a programme where being wrong is a regulatory event rather than an inconvenience, that is the whole job.
Alongside the rewrite I ran a digital initiative on the desk itself: taking repetitive data collection and reporting off people and putting it into tooling. Different problem, different pace, same underlying question about where effort is being wasted.
The regulatory programme was externally imposed, fixed-date and unforgiving. The automation work was internally chosen and easy to defer. The discipline that gets a regulator’s date met is the same one that stops a good automation idea dying in a backlog.
The value of this work is not a saving. It is the list of things that did not happen.
| If it had gone wrong | What follows |
|---|---|
| Live after the commencement date | Breach of the reporting obligation from day one, across every affected trade |
| Eligible trades missing from the population | Under-reporting. Remediation and back-reporting of everything affected |
| Ineligible trades reported | Over-reporting. Equally a breach, and it distorts the regulator’s view of the market |
| Wrong values accepted by the repository | The worst case. No rejection, no alert, and an inaccurate regulatory record standing until a reconciliation finds it |
| Legacy records left unmigrated | The historical population stays wrong under rules that now apply to it |
The scope went into production against the regulatory timeline, with eligibility logic deciding the population in both directions, mapping traced to source, exceptions surfacing rather than passing through, legacy records assessed rather than assumed, and the same end-to-end checks repeated on live flows after go-live.
This page names no internal application, no internal team, no colleague and no trade. The reporting chain is described by what each layer does rather than by what it is called. ASIC, MAS, DTCC GTR and the 21 October 2024 commencement date are all matters of public record, and everything else has been left out on purpose.
Three deliverables, and each one maps to a claim at the top of this page.
A project charter and schedule tied to the regulatory date, RAG reporting that surfaced blockers before they became late-stage surprises, and a weekly huddle where severity was argued on regulatory impact rather than volume. Scarce Operations testing time was scheduled as the constrained resource it was.
ASIC and MAS analysed together rather than sequentially, so shared data elements were specified once and jurisdictional differences were treated as conditions on a common requirement rather than as two parallel builds.
Scenarios that followed a representative booked trade through every layer to the repository record, exception branches tested rather than assumed, and a defect workflow that named the failing layer with evidence attached before anything was handed to Technology.
Front-load the conditional fields and the exception branches. They were tested, but they were tested after the happy paths, and they are where regulatory reporting actually breaks. A field required only under a specific product and event combination will not surface on its own; someone has to sit down and deliberately construct the condition. Doing that early would have moved several discoveries out of the pressured end of the schedule.
Everything above is the business read. Everything below is the method: how a rule became a buildable change, how one trade was followed the whole way, and how a defect was made to name its own layer.
Everything above is the bottom line. If that is what you came for, you already have it.
What follows is the full working: 10 diagrams and 9 sections of working, the analysis behind each decision, and why it went that way instead of the obvious way. It is long on purpose. It is written to be checked, not skimmed.
Only wanted the overview? Stop here. You will not miss a single result — every number is already above this line.