GESCOM 2006, twenty years on.
Four modules, a Windows 7 machine in the back office, and a developer who left the country in 2014. This is the bench we run before quoting anything — and two times out of four it ends in keep it.
Does it really need replacing?
Four reasons justify it, and one is enough. Outside those four, keeping the system is almost always the right decision. Every cell below rests on evidence the bench holds — not on a box you tick.
Invoicing stays on GESCOM 2006.
It does the job, three people use it, the printed document is compliant and the machine cannot see the network. Replacing it would cost the price of a project and fix nothing.
The expensive nuance: it reads the clients table, which does migrate. So the parallel run covers both, and a bridge stays in place for as long as invoicing lives on the old system.
Stock stays on GESCOM 2006.
None of the four reasons applies. The machine has had no network card since 2019, four storemen know how to run it, and the references are Latin — there is nothing to recover.
We score exposure, not age. A module with no patches is only a risk if it is reachable or holds personal data. This one is neither.
The proof that the data comes out.
We do not quote a migration before doing it once. Every row of the ledger below balances — read = out + not out — and every loss carries a named reason.
Half the file is correct and half is not — which is the worse of the two cases, because nobody notices until the new system is live.
Both of them run at once.
A single big-bang cutover over a weekend is the fastest way to lose both the data and the confidence of the people using it. So both systems run together, and when they disagree the bench does not decide — it names who does.
The parallel run covers credit. Clients have no arithmetic to compare: their check is the line-by-line reconciliation in Act II.
A balance settled in cash at the counter is rounded down to the nearest ten dinars. The new system counts to the dinar.
Neither is wrong. They are two conventions, and the business has applied one of them for twenty years without anybody writing it down.
the accountant — He signs off the close, and the rounding runs through it.
The discount lands at line level on one side and at invoice level on the other. On a mixed basket the two cannot both come out right.
Neither is wrong. They are two conventions, and the business has applied one of them for twenty years without anybody writing it down.
the manager — A discount is a commercial decision, and he takes it.
Thirty crates came back to the warehouse. The new system carries them as a negative line against the day’s credit; the old one records them in a separate deposit register whose figure never reaches credit at all.
Neither is wrong. They are two conventions, and the business has applied one of them for twenty years without anybody writing it down.
the warehouse foreman — The crates are counted at the warehouse: he is the one who knows what came back, and the only one.
A written rule, not a corrected figure.
It goes into the new system’s code and into a document you keep. That is the half of the work nobody invoices: the rules that lived in one employee’s head, written down once and for all.
Switching the old one off is not a date.
It is an event: the first close both systems pass giving the same figure. The button opposite exists, it is the only one on this page, and it refuses until all four conditions are met. Nowhere here is there a command that switches everything over at once.
- The extraction has only been replayed once. Two identical passes are required.
- A discrepancy is still open — D3, Counter rounding.
- No arbiter is named for the Clients module.
- The archive of the old system has not been produced.
The missing conditions are listed alongside. The button only becomes pressable once all of them are met — and a system switched off that nothing can be got out of is not a system stopped, it is a system lost.
Sixty columns, no instructions.
The model reads the column names and proposes a mapping. It can only name a field of the new database, or unknown — it has no box to invent in, and no field to write a figure in.