Module

Three journals: what we touched, what you did, and what we warned about

What is recorded about touching data, what about the customer's own work, and what stays private.

A contractor working with a customer's data should be able to show exactly what they touched. Not "who opened a screen", but what was done to the data and what left it. That is what gets written here, in three journals kept deliberately apart.

The access journal: what was done, not who glanced

The decision was to record changes and exports, not views. The reason is plain: a customer does not care that someone opened a task list, they care what was changed and what was taken out. A sweep of the code found 44 points where the provider side touches customer data; forty-four lines of "opened a list" answer no question they will ever ask.

Background jobs are not recorded, and not by a list of names: background work has no person behind it, and the rule reads "no person, no row". Any new job written tomorrow falls under it by itself, without anyone remembering it exists.

What a row says

Every row carries what happened (created, changed, deleted, exported), over which kind of data, and how many objects were affected. For a task both numbers are shown through a separator, ours and the vendor's.

The change itself is written with values, but not for every field, and the line runs by meaning rather than by type. Status, priority, due date and hours estimate are written with their values, because a value like that is understandable on its own. Foreign keys are written by field name only, because "department: 3 to 5" is a riddle, not an answer. Content texts such as a title or an internal note are also written by name only: their values are the customer's data itself, and a journal proves a fact rather than keeping a second copy.

Money in a journal is closed by the same rule that closes it on screen

Whoever is not entitled to see amounts will not see them here either. The row stays where it is, the event stays visible, and the values come off the caption. An important detail: values come off the whole row, not only the money part, because a neighbouring field, hours or quantity, would let the amount be reconstructed by subtraction.

We did not hide the row entirely. A journal silent about the event itself is worse than a journal without numbers: the customer would not learn that the cap had been touched at all, and the silence would read as "nothing happened".

What the customer does on their side is a separate journal

The customer's actions in the portal have a journal of their own: sign-in, screens, reports, exports, changing a task's department. The two journals do not merge, and not for convenience: they answer different questions, have different readers and different retention. On one screen they stand side by side; in the data they remain two tables.

How long it is kept

The access journal is kept for seven years by default, and that is a setting rather than a constant: for another contractor the law names another period. The portal activity journal is kept for a year; it answers a different question and accumulates far faster.

Orders of magnitude from one live project, not a promise: 112 rows in the access journal and 680 in the portal activity journal.

The warnings journal: a private record of "I did warn you"

The third is built differently and is private: the customer does not see it. It exists for the moment when we warned, the decision went the other way, and two months later the problem surfaced.

A record has two shapes: they asked for something against our recommendation, or we warned on our own initiative. Each one states what we advised and what was decided, and later you can add what actually happened. A record moves through four stages over time: warned, chose otherwise, problem appeared, resolved. It can be tied to a task and to the people who were part of the story.

This is not a weapon. It is memory: in six months nobody will recall who said what, and the conversation will run on facts.

Where it lives

All three journals sit in one place inside the project. The customer sees their own access journal in the portal, on a separate page with two filters.

Frequently asked questions

Does the access journal record who viewed the data?
No. The access journal records actions that change data or take it out: creating, changing, deleting and exporting, not views. Each row says what was done, to which kind of data and to how many items. Background jobs are not recorded, because there is no person behind them. That way the journal answers the question a client actually asks: what was done to their data and what left it.
Who sees each of the three journals?
The client sees the access journal themselves, on a separate portal page with two filters. On the provider's side, the access journal and the client's portal activity journal are shown side by side, but they are stored as two separate tables. The warnings journal is private to the provider and the client does not see it: it records what was advised, what was decided and what happened afterwards.
How long are the journals kept?
The access journal is kept for seven years by default. That is a setting rather than a number fixed in code, because the retention period the law requires differs from one provider to another. The client's portal activity journal is kept for one year: it grows much faster and answers a different question, namely what the client did in the system, so it does not need the same retention.
What does someone without the money permission see in a journal?
They see that the event happened, but without values. The row stays in the journal, and the values are removed from the whole row, not only from the money field, because hours or a quantity left beside it would let the amount be worked out. Hiding the row entirely would be worse: whoever reads the journal would not learn that the cap had been touched at all.

Want to see this on your own data? You can start with a trial, no card required.

Start a free trial