A backup nobody has restored, and a door nobody remembers opening
This is where the guide turns to running the thing and recovering it, and the first move is not a backup job. Chapter 17 defines what gets saved, who holds it, who is allowed to decide that it goes back, and exactly which sentence the existence of a copy entitles you to write. Chapter 18 asks the awkward question underneath every commissioning weekend: which doors did not need to be open at all. Two worksheets, about thirty-five minutes, no credential typed, no firewall rule changed, and no restore attempted — because the point of both sheets is to stop a restore being attempted by whoever happens to be holding the laptop.
Two chapters in the recovery half, and neither one presses a button
You have come through the commissioning half of this guide: the daemon, the interface, the driver, the INI, the ETS preflight, the Home Assistant entity model, the safety test matrix. Part 7 opens the third stretch — running it, and recovering when it breaks — and an installer reasonably expects it to open with a backup job and a firewall review. It does not. It opens with two sheets of paper.
Chapter 17 defines backup scopes, restoration responsibilities and a de-identified evidence index. Chapter 18 identifies gaps in permissions, secrets, network exposure and approval workflows. Neither creates a backup. Neither restores one. Neither modifies a firewall, a credential, an account or a network. The output of both is a record, and the record is the thing you will be glad of at two in the morning when someone with physical access to the cabinet asks whether it is safe to put the project back.
| Chapter | What comes out of it | Time | System change |
|---|---|---|---|
| 17 — Project backups | Backup scope, custody, checks and restoration gates, written as a privacy-safe index | About 20 minutes | None. Do not create or restore real environment backups; compile only de-identified offline backup and restore drill lists |
| 18 — Security baseline | A gap list across secrets, permissions, network exposure and approval records | About 15 minutes | None. Do not modify permissions, secrets or networks; perform only an offline minimum-exposure review |
Each chapter carries its own stop conditions, and they are worth reading before you pick up a pen rather than after somebody has already pasted something into a work order.
Both chapters sort every proposed action into the same four tiers, and the sorting does not change because the action sounds harmless.
flowchart TB
subgraph OUT["Not done here"]
direction LR
O1["Isolated test
written approval, non-production rig,
admin present, limited network exposure,
stop-and-recovery plan"]
O2["Approval required
viewing or changing a running
environment, read-only included"]
O3["Never automate
group read or write, telegram,
ETS programming or downloads,
interface or bus connection,
control of physical equipment"]
end
subgraph IN["Safe: what Part 7 does"]
direction LR
I1["Offline pinned sources,
read only"]
I2["Category and placeholder
worksheets, no live values"]
end
One more framing to keep hold of, because it governs every sentence in both chapters. Everything this guide states is bounded by pinned sources — for Chapter 17, knxd/DOCS.md at the pinned KNXD Add-on 0.6.1 commit; for Chapter 18, that same file together with knxd/config.yaml. Those sources support what a field is called, what a document says, and what an options schema declares. They support nothing at all about what is running in your building, what is reachable on your network, or what is on your bus. Publication is not site validation.
Two claims you may write, and one you may not
Chapter 17 turns on a single distinction: the saved content is one thing, the index of the saved content is another. An external reviewer, an insurer, a client's IT department or the next installer on site usually needs only the second one.
A backup is a sealed file box. The card on the outside of the box carries the content category, who holds it, whether it has been checked and when it lapses. It does not copy out what is inside. Someone reading the card learns that a box exists and who is responsible for it. They learn nothing whatsoever about whether the papers inside can still be read.
The formal names for the four things that card is doing are backup scope, chain of custody, restoration responsibilities and de-identified evidence indexing. In this chapter you complete the card only. The existence of a backup does not prove a successful restore, and the integrity of a copy does not prove that an application can read it or restore state from it.
That gives three separate kinds of evidence, and the whole discipline of the chapter is refusing to let the cheap two vouch for the expensive one.
flowchart TD A["A copy exists"] --> A2["You may write:
copy recorded"] B["An offline integrity record matches"] --> B2["You may write:
controlled replica consistent"] A2 -.->|"does not prove"| C["Recoverable"] B2 -.->|"does not prove"| C C --> D["Needs accurate versioning, compatibility,
scope of approval, stopping conditions
and evidence of an independent exercise"] D --> E["Pinned sources do not support
that set of procedures.
Mark restoration unverified"]
| Kind of evidence | What it actually shows | What it does not license you to claim |
|---|---|---|
| Copy existence | Someone saved something, and it is recorded on the index | That the scope is right, that custody is defined, that anything can be read back |
| Offline integrity record | A comparison saying the controlled replica remains consistent | That an application can parse it, that versions are compatible, that state can be restored |
| Recoverability | Nothing yet — it needs accurate versioning, compatibility, scope of approval, stopping conditions and evidence of an independent exercise | Anything at all, until that separate exercise has happened under its own approval |
Responsibility splits the same way. The backup role manages retention and expiration. The restoration role decides when a separate restoration exercise may begin. The independent-review role checks scope, evidence limits and privacy. A statement that “someone is responsible” cannot replace these three distinct assignments.
Filling in the card without filling in a single live value
Prepare a blank index that contains no live values, and fill every field with a category, a role or a status. Five columns, and each has a rule about what may go in it.
| Column | What goes in | What must not |
|---|---|---|
| Purpose | Save, audit, or restore plan | Do not default to restore because restore is the word everyone reaches for |
| Scope | Data categories, exclusion categories, retention policy | Project names, or any listing of contents |
| Responsibility | The roles of creation, custody, restoration decision-making, independent review and exception approval | Individual names in place of roles |
| Evidence | Source version, creation record type, completeness status, review status, evidence gaps | Any conclusion about restorability |
| Privacy check | A confirmation that the row is clean | Secrets, accounts, endpoints, hosts, networks, paths, serial numbers, addresses, scopes, environment names |
The responsibility column lists five roles and the step that fills it in names four of them — creation being the one the step leaves implicit, since somebody has already made the copy by the time the card is written. Fill in all five and you have satisfied both readings, which is the cheaper option when a reviewer is reading your card rather than the source.
The person who keeps the archive key is not the person who decides a file goes back into circulation. That separation feels like bureaucracy right up to the week the archivist, alone on a Saturday, puts back the version everyone had agreed to abandon. Custody is a duty of care. Deciding it goes back is a different job with a different signature.
Six steps, in order. They organize paper management information and nothing else — you will not open a formal project, nor create, import, or overwrite any content.
-
Step 1
Write down the purpose of saving
Explain in one sentence why backup management is needed, and state on the card that this chapter does not perform backup or restore. That second sentence is doing real work: the card outlives the afternoon you wrote it, and its next reader will not have this page open.
-
Step 2
Define the backup scope
List only the data categories that need to be saved and those that must be excluded. Do not fill in any live values. An exclusion category is as much a decision as an inclusion, and it is the half that gets left blank.
-
Step 3
Assign responsibilities
Assign custody, restoration decision-making, independent review and exception approval roles respectively. Then write the retention policy and the handover conditions. If a role has nobody, leave it visibly unassigned rather than quietly attaching it to whoever is nearest.
-
Step 4
Create a privacy-safe index
For each preservation category, document the status, the source version, the retention policy and the evidence limit. Replace actual content with
RedactedorPending Verification. Those two placeholders are not the same claim, and choosing between them honestly is most of the value of the row. -
Step 5
Mark the evidence limit
Separate copy existence, offline integrity record and recoverability. The first two items cannot endorse the last one. Write the limit on the row itself, where the next reader will meet it, not in a note at the bottom of the sheet.
-
Step 6
Submit the index for independent review
Confirm that the index does not identify the environment and does not state unverified results as facts. If anything is missing, return it for correction rather than approving it with a comment.
The gate that matters most on this card is the one in front of an actual restore, because that is the request that arrives under pressure and from someone senior.
flowchart TD
R["Someone asks for a restore"] --> Q1{"Is a restoration decision
role named on the card?"}
Q1 -->|"no"| N1["Leave it unassigned and stop.
Custody does not inherit
the decision"]
Q1 -->|"yes"| Q2{"Scope, written approval and
stopping conditions all present?"}
Q2 -->|"no"| N2["Treat it as unapproved
and keep it stopped"]
Q2 -->|"yes"| Y["A separate restoration exercise
can be planned under its own
approval. Chapter 17 presses nothing"]
The one instruction both chapters repeat, word for word
Each chapter states it four times over: in the preparation, in the steps, in the completion check and again in the FAQ. When a source repeats an instruction eight times across two short chapters it is not padding; it is a rule the author expects to be broken.
What you may use instead is narrow and conditional. When there is a real need for governance, and the data is not derived from live events and the environment cannot be identified, a reviewed formalized policy deadline or an abstract expiration status can be used. When precise dates are not required — and on these two sheets they generally are not — relative or status classifications are preferred.
not expired — the item is inside its policy window, and the window itself is a policy, not an eventto be renewed — the window is closing and a named role has to actexpired — the window has passed, which is a governance fact and not a log lineA delivery card left on a doorstep saying “called Tuesday, 14:05, no answer” tells anyone walking past when that house is empty. The card only needed to say that a delivery is waiting. A backup index carrying creation times, execution times and log timestamps does the same trick for a building: it hands a reader the daily rhythm of a house, or a maintenance window, alongside the list of what is worth taking.
This is why a status classification is the default and a date is the exception. A deadline that came out of a reviewed policy document describes an intention. A timestamp scraped from a log describes an event that happened in a real building, and once it is in a shared worksheet you cannot get it back.
Which doors did not need to be open in the first place
Chapter 18 starts from the opposite end to the way commissioning usually goes. Rather than asking what still needs opening to make the job work, it asks which openings could be closed without anybody noticing. Convenience is not a reason to retain exposure.
A building does not give every key to everyone, and it does not prop every door open because the last contractor found it handy. Each person gets the keys their work needs. Each door opens for a stated scope and a stated period. Anything outside that is an exception, and an exception has a name against it and a date it comes back.
The formal names are least privilege, minimal network exposure, minimized secrets and traceable approvals. The worksheet turns them into four questions asked of every row: what is needed, who is responsible, when, and how to cancel. You record only categories and decisions — never a key's contents, never a door's location.
Draw the four columns before you collect any information. Every column carries the same six attributes: requirements, ownership roles, approval status, expiration policy, revocation method and evidence limit. What differs is what is permitted inside.
| Column | What you write | What never appears |
|---|---|---|
| Secrets | Only exists, not entered into the record, or pending controlled review |
No values are copied, in any form, masked or otherwise |
| Permissions | Capability categories only: reading, changing, approving, reviewing | Account numbers, or a person's name |
| Network exposure | Trust boundary category, the requirement it serves, and the deadline policy | Host, address, endpoint, or topology |
| Approval records | The approval role, a controlled record reference, the scope, and an abstract expiration status | Signatures, or personal certification |
Two categories of information get confused constantly on jobs like this, and they leak by different routes. Secrets grant access directly. Environment-identifying data reveals asset relationships. Neither belongs in public guides, screenshots, log excerpts, work orders, or submission records — and the second one is the one that gets pasted, because it does not look like a secret.
The review produces a gap list, not a configuration
This review produces a list of gaps. It does not produce settings, commands, or live results. Six passes, in order.
-
Pass 1
State the necessary purpose first
Each column addresses only one requirement. Mark any item without an explainable purpose as a risk to remove. “It was already like that” is not a purpose, and neither is “the last engineer needed it.”
-
Pass 2
Check the secret column
Confirm that public records only show confidential processing status. Sharing stops the moment any secret value appears — not after the sheet is finished, and not after it has been sent to one more person for a quick look.
-
Pass 3
Check the permissions column
Separate reads, changes, approvals and reviews. Record a missing expiration policy, a missing revocation method or a missing owning role as a gap. These are three different absences and each gets its own line.
-
Pass 4
Check the network-exposure column
Use trust boundary categories to describe the necessary interfaces. Any exposure without a purpose, a role or a duration policy is listed as a gap. On a KNX job this is the column where a commissioning convenience quietly becomes a permanent route into the bus side of the building.
-
Pass 5
Check the approval record column
Verify that each exception has a scope, an approval role, an expiration policy, revocation conditions and a controlled record reference. An exception missing any one of those five is an exception in name only.
-
Pass 6
Do an independent review
A different role checks the four columns and the data minimization. The conclusion is written as one of three words, and no other.
complete — the four columns are filled to the rules, and minimization holdswith gaps — the sheet is honest, and the named gaps are the work liststopped due to insufficient data — a real result, and often the correct oneInside those passes, one row at a time, the sheet is really a four-gate test. A row that clears all four gates is complete; a row that fails any gate produces a named gap rather than a permission.
flowchart TD A["One row: a secret, a permission,
an exposure or an exception"] --> Q1{"Purpose
explainable?"} Q1 -->|"no"| G1["Risk to remove"] Q1 -->|"yes"| Q2{"Owning role
named?"} Q2 -->|"no"| G2["Governance gap.
Add no new permissions"] Q2 -->|"yes"| Q3{"Expiration
policy set?"} Q3 -->|"no"| G3["Incomplete. Do not replace
a missing decision with
permanent exposure"] Q3 -->|"yes"| Q4{"Revocation method and
controlled record reference?"} Q4 -->|"no"| G4["Exception in name only"] Q4 -->|"yes"| OK["Row recorded as complete"]
What each chapter counts as finished
Chapter 17 is complete when the index is safe for review — not when the environment is restorable. Eight checks:
- The purpose of preservation and the inclusion and exclusion categories are all clear, with no environmental values.
- Custody, restoration decision-making, independent review and exception approval each have a responsible role.
- The evidence index contains only category, status, retention policy and source version.
- No environment or event timestamps, log timestamps, backup creation times, execution times, or any time associable with family activities or system events.
- Where governance genuinely required a date, it is a reviewed formalized policy deadline or an abstract expiration status, not derived from live events and not identifying the environment.
- A copy's existence and its offline integrity are not described as proof of a successful restore.
- Accurate backup procedures, compatibility and restore results are still marked unverified.
- All environment, KNX bus, ETS and integration results remain unproven.
Chapter 18 is complete when the result is a de-identified governance list. It does not indicate that any control has been applied in a production environment. Eight checks:
- The secret field has no credentials, tokens, sessions, passwords, cookies, or retrievable connection information.
- The permission column separates read, change, approval and review, and records deadline policies and cancellation responsibilities.
- The network exposure column contains only requirements, trust boundary categories, owning roles and expiration policies.
- Each exception has an approval role, a scope, an abstract expiration status and revocation conditions.
- The record has no host, endpoint, account, path, serial number, address, topology or environment name.
- No environment or event timestamps, log timestamps, backup creation times, execution times, or any time associable with family activities or system events.
- Where a date was genuinely required for governance, it is a reviewed formalized policy deadline or an abstract expiration status.
- All field controls, execution environments, buses, ETS and integration results remain unproven.
The twelve ways these two sheets go wrong
Both chapters ship a troubleshooting list, and the entries are less about mistakes than about pressure — the moment where the honest answer is inconvenient and the sheet quietly gets a better one. Six from the backup card first.
| What you notice | What to do |
|---|---|
| The scope column reads like a list of contents | Replace it with data categories, and remove names, locations and values |
| The restore responsible role cannot be found | Leave it unassigned and stop. Do not automatically assume the custodial role is the restoration decision-making role |
| A copy is described as restorable merely because it exists | Limit the conclusion to “copy recorded,” and mark parsing, compatibility and restoration as unverified |
| The index contains sensitive information | Stop sharing and withdraw the copy. Minimize it again, and give it to a different role for review |
| Someone asks for the operation screen | Refuse. There is no live backup or restore procedure in this chapter |
| Someone asks to join or start the tool | Stop. In the absence of an approved immutable provenance gate, it will not join, install or start |
Six more from the exposure sheet.
| What you notice | What to do |
|---|---|
| A field appears to require live values | Change it to a data category and mark it “controlled review required.” Do not bring values into the worksheet |
| A permission has no owning role | Mark it as a governance gap, and stop adding new permissions |
| A network exposure has no expiration policy | Mark it incomplete. Do not replace a missing decision with permanent exposure |
| Only verbal approval exists | Treat the item as unapproved and keep it stopped |
| Someone asks you to modify the firewall or the credentials | Refuse. This chapter is an offline worksheet and does not provide firewall, credential or live system change procedures |
| The environment can still be identified after masking | Remove more context, or use a text-only category summary instead |
The ones that come up on site
We found a backup. Does that mean we are safe?
The worksheet asks for a deadline. Can I put today's date in?
not expired, to be renewed, expired.Can the index contain file names?
Can the custodian decide to restore?
Will this chapter validate my ETS project?
Once the checklist is complete, can I say the system is recoverable?
Can I put a full log on the worksheet if it is masked?
Is read-only access to the live settings safe?
Can secrets be disclosed if the disclosure is approved?
Does the listener status prove that the network is restricted?
Does completing the checklist demonstrate the state of our security controls?
Why does a completeness record not count as a recoverability record?
Where to go from here
The record is defined. Now the symptoms.
Part 8 stays off the bus and works through failure: link symptoms sorted into an offline distribution table, then the USB side. Same discipline — categories, not captured values — and the card and worksheet you have just built are what those symptom tables get filed against.
Open the full guidePart 7 of the WoowTech KNXD Complete Tutorial series on the Apporo blog.
Adapted from the WoowTech KNXD complete tutorial, produced by WoowTech and republished by Apporo.
Versions and claims are bounded by the pinned sources. Publication does not represent validation of any live site, hardware, network or KNX bus, and is not an authorization to operate KNX, ETS, Home Assistant, group objects or physical control.
Light · Air · Water · Control · apporo