Skip to Main Content
AVIATION TECHNOLOGY·10 MIN READ·AUG 19, 2026

Who Are You, and How Do We Know?

The tables nobody asks for, the questions that find them, and the government agencies you do not control.

This follows on from Before You Write a Single Line, which set out why a civil aviation authority is not a data-entry system, and what to have on your machine before starting.


You have been asked to build Air Operator Certificate issuance. So you read the regulation, and the regulation is generous with detail.

An operator needs an approved Operations Manual. A maintenance program. Nominated persons accepted by the Authority. An inspection at their base. Test flights flown and passed. You start sketching tables — an application, a status, some children for the manual and the inspection — and it feels like progress, because every one of those things is written down somewhere you can point at.

Three weeks later someone asks a question you cannot answer.

Who submitted this application?

Not "which user account" — you probably have one of those. Who is the operator? Are they a real company? Is the person who filed this allowed to speak for them? Were they allowed to on the day they filed it, or did they leave last month?

None of that is in the regulation you have been reading, and none of it is in the tables you have been building. You have designed the interesting half of the system and skipped the half everything rests on.

Regulations describe obligations, not systems

This is the gap, and it is not anyone's fault. A regulation tells an operator what they must do. It does not tell you how the Authority knows the operator exists.

The rule says an air carrier must hold a certificate. It does not say how the company is identified, who may act for it, what happens when that person changes job, or how the Authority satisfies itself that the company is registered and trading and not a name someone typed into a form.

Those answers exist. They are just not in a document — they are in the heads of the people who currently do the work by hand. Getting them out is what business analysis is for.

The four questions that design three tables

A business analyst sitting with the licensing department asks things that sound too obvious to be worth asking. They are the most productive questions in the room.

Q. Who submits the application?
A. The company.

Q. Which person at the company?
A. Usually the operations manager. Sometimes the accountable manager.

Q. Can anyone else?
A. They can appoint a consultant. That happens with new operators who do not have the staff yet.

Q. How do you know that person is allowed to?
A. ...

That pause is where a table gets designed.

Look at what each answer actually names. "The company" is an organization — something with a legal identity, a registration number, an address. "The operations manager" is a person, employed by that organization, holding a role. "Can appoint a consultant" is somebody who is not an employee at all, acting on the organization's behalf because it granted them permission. And "how do you know" is the discovery that permission is a thing the system must hold, grant, and be able to withdraw.

Four questions produced four entities, and not one of them is mentioned in the regulation you started from. You would not have found them by reading harder.

Figure 1 — Four questions, four entities

"Who submits the application?" The company "Which person at the company?" The operations manager "Can anyone else?" They can appoint a consultant "How do you know they're allowed?" ... ORGANIZATION a company with a legal identity PERSON + EMPLOYMENT an individual, and where they work AUTHORIZATION acting for someone without working for them THE REQUIREMENT NOBODY WROTE permission must be granted, dated, withdrawable Four questions. Four entities. None of them named in the regulation.
The conversation is the design session. Every answer names something the database has to hold, and the pause before the fourth answer is where the real requirement lives.

The requirement everyone agrees to and nobody can test

There is a failure mode in requirements gathering that looks exactly like success.

The stakeholder says: the company must be verified before it can apply. Everyone nods. It goes into the document. It gets signed off. It reads like a requirement — it has a subject, a verb, and a condition.

Now try to build it. Verified by whom? Against what source? Recorded where? Checked at which point in the process — at registration, at submission, at the moment the certificate issues? What happens if the verification succeeded two years ago and the company has since been struck off?

If nobody in the room can answer those, the requirement passed review and constrains nothing. A developer reads it, decides it means a checkbox called IS_VERIFIED, sets it to true when someone ticks it, and ships. The requirement is satisfied and the system verifies nothing.

A requirement you cannot test is a requirement you have not gathered.

The test is simple and it is worth applying to every line: what would I have to look at to prove this is true? If the answer is "a column somebody sets by hand," the requirement is a placeholder wearing a requirement's clothes.

Why this matters more in a regulatory system. In most systems an untestable requirement produces a feature nobody uses. Here it produces a certificate that was issued on the strength of a check that never happened — and somebody will ask about it years later, in a dispute, when the person who ticked the box has left.

The foundation, and why it is shared

What the four questions surface is a small set of tables that have nothing to do with aviation and without which nothing aviation-related can happen.

Three of these are worth pausing on, because each embeds a decision that is easy to get wrong and expensive to reverse.

Employment is dated, and it is not a column

The obvious design is a company column on the person: this pilot works for that airline. It is one column, it is easy to query, and it is wrong.

A licence issued three years ago was issued while that person worked somewhere else. If the column holds today's employer, the question "who employed them when this was issued" has no answer at all — and that is exactly the question that gets asked when something goes wrong. Employment is a relationship with a start and an end, not an attribute of a person.

Some people have no employer, and that is not an error

A private pilot flying their own aircraft works for nobody. A licence holder between jobs works for nobody. If your model requires everyone to belong to an organization, you will end up inventing a fake one to put them in — and then explaining to the next developer what the "General Public" company is and why it has four thousand employees.

A person holds several identity documents at once

A national ID and a passport. A residency permit and a passport. Different numbers, different issuers, different expiry dates, all valid simultaneously. Two columns will not do it, and the moment you try, someone arrives with three.

This is roughly eighty percent of the work, and none of it looks like the thing you were asked to build.

The reason to build it once, properly, is arithmetic. An authority provides hundreds of distinct services, and every single one begins by knowing who is asking. Build the foundation per service and you build it hundreds of times, slightly differently each time, and the pilot who appears in two of them is two different people as far as the system is concerned.

Figure 2 — The foundation

ORGANIZATION the company PERSON the individual EMPLOYMENT dated, and often absent ADDRESSES one or more PHONES typed, dated EMAILS verified or not IDENTITY DOCUMENTS several at once Not one of these is aviation. All of them are prerequisites.
Built once and used by every service the Authority provides, which is why it is worth getting right before the first one is built.

The parts of the system you do not own

Here is the thing developers most often miss, and it is the difference between a registration form and a registration system.

Your system does not decide whether a company is real. It asks somebody who knows.

A commercial registration number is not a string your form validates for length. It is a number issued by the Ministry of Commerce, and the Ministry of Commerce is the only party that can say whether it is current, who the authorized signatory is, and whether the company is still trading. The same is true right down the line.

Figure 3 — Four questions your system cannot answer for itself

Commerce is the company real? National identity is the person who they say? Interior security clearance Payment has the fee settled? Your system stores the answer, and the date it was true Each of these can be unavailable, can refuse, and can change its mind next year.
The medical domain is a fifth, and it is stricter still: the licensing side learns only whether the person is fit, never why.

Four consequences of not owning the answer

Four consequences fall out of this, and they are design consequences rather than inconveniences.

An answer is true on a date, not forever

The commercial registry said this company was active on the day you asked. It does not follow that it is active today. So you store the answer and the date it was given, and anything that depends on it knows how old it is. A verification with no timestamp is a rumour.

Every one of them can be down

The national identity service is not part of your system and does not care about your uptime target. So registration needs a state that means waiting for someone else — and the clock that measures how long the Authority took should not be running while it waits, because that delay is not the Authority's.

Some of them say no

Not every refusal is a failure. A security clearance that comes back negative is a valid answer that the process has to handle, route to somebody, and record — not an error to be retried.

You never hold what you do not need

Payment is the clearest case. The system records that a fee is owed and that it was settled, with a reference. It never sees a card number, and it should never be built in a way that could.

The mistake this section exists to prevent. A registration screen with a text box labelled "Commercial Registration Number", stored as free text, never checked against anything. It looks finished. It passes testing, because testing types a plausible number into it. And the first time it matters — in a dispute, an audit, or an appeal — the Authority discovers it has been accepting whatever anyone typed.

Now, finally, the Air Operator Certificate

Everything above happens before an operator can apply for anything. Only now does the service you were originally asked to build become possible.

By the time the application arrives, the system already knows: this organization exists and the registry confirmed it, on a date; the person filing is employed there, or is authorized without being employed; that authorization was granted by somebody entitled to grant it and has not been withdrawn; and the individual is who they claim to be, confirmed against the national register rather than asserted on a form.

And then the AOC turns out to be the hardest service in the catalogue anyway — because it is not one application. It is an application that contains other applications: the Operations Manual has to be approved on its own terms, the maintenance and training programs likewise, each nominated person accepted individually, the base inspection passed, the test flights flown. Any of them can be refused without the others failing.

Figure 4 — The service sits on two layers it does not own

Air Operator Certificate five phases, and an application containing applications Verification results, each with the date it was true commercial registry · national identity · security · payment Organization · Person · Employment · Authorization · Contacts · Identity the foundation, shared by every service the Authority provides Build from the bottom. The top is the part you were asked for; it is not the part you start with.
Most projects design the top layer first and discover the other two in month four.

What to take from this

If you are the developer: resist the urge to start with the thing you were asked for. Ask who the applicant is and how the system knows. Follow that until you run out of questions, and you will have found the foundation.

If you are doing the analysis: the useful questions are the ones that feel too basic to ask. "How do you know?" is worth more than any amount of reading. And when a requirement comes back that everyone agrees with, ask what you would have to look at to prove it true. If there is no answer, you have a sentence rather than a requirement.

And for both: the regulation is a genuine source, but it is a source about obligations. It tells you what must be achieved. It is silent on how anyone would know it had been — and that silence is where most of the system lives.

Next in this series

Turning one service into rows: how the Air Operator Certificate becomes configuration on a process you have already built, rather than a system of its own.

Rate this article

Discussion

No comments yet. Be the first.

Join the discussion. Comments are open to anyone with an account.

Create Account or Sign in