Back to Blog

Legacy software: rewrite it from scratch or modernise it?

Business software
September 24, 2026

When software becomes "legacy"

When it keeps working but nobody dares touch it any more. Age has little to do with it. What counts is the point at which every change is frightening and costs more than it should.

Almost every company has one. The management system written fifteen years ago by a supplier that has since closed down, the in-house application only one person understands, the database that has picked up spreadsheets and scripts over the years. And it works. Which is exactly why putting it off always looks like the safer choice.

Signs that the time has come

The main sign is that the software has stopped keeping up with the company and has started holding it back. You usually notice it in the people before you notice it in the code.

A small change takes weeks, because nobody knows what breaks when you touch one part. The knowledge sits in one person's head, and when that person is on holiday certain things don't get done. Excel sheets have grown up around the system, because it no longer covers the real cases (we wrote about this in when Excel sheets became your ERP). The operating system, database or language no longer receives security updates. And every exchange with e-commerce, accounting or suppliers goes through a manual export.

One of these signs on its own isn't enough. If you recognise three or four, standing still is already costing you more than moving.

The three possible routes

You can keep it and build around it, modernise it one piece at a time, or rewrite it from scratch. The third is the most attractive, and nearly always the riskiest too.

Keeping it and building around it means leaving the old system at the centre and "wrapping" it. You put a layer in front of it that exposes the data in a modern way, and new features are built outside it, in separate applications. This makes sense when the core works well and the problems are at the edges, in the integrations or the interface.

Modernising one piece at a time means picking an area (orders, the warehouse, invoicing), rebuilding it, putting it into production and only then moving on to the next. For a while old and new live side by side and talk to each other. On paper it's slower. In practice each step delivers value straight away and every mistake stays small.

Rewriting from scratch means building a new system in parallel and switching over at some point. We only recommend it when the old one is beyond saving, or when the company has changed so much that the data model no longer holds up.

Why the big rewrite is risky

Because the old software contains rules that nobody has ever written down anywhere else. Rebuilding it from scratch means rediscovering them one by one, often in the worst possible way, in production.

The special terms granted to a long-standing customer. The rounding done a certain way because that's how the accountant wanted it. The check added after a mistake years ago. They're inside the code, not in the documentation, and sometimes not even in the memory of the people who use the system every day. A rewrite that doesn't recover them produces cleaner software that gets things wrong in new ways.

Then there's time. While the new system is being built, the company keeps changing and the old one keeps getting urgent fixes. The target moves, and that's why complete rewrites tend to drag on.

How to switch without stopping the company

By working area by area, running old and new side by side, and getting the hidden knowledge out before you replace anything.

  1. Map what the system does today, which often isn't the same as what it's supposed to do. You start from the code, the data and the people who use it.
  2. Choose the first area by how much it hurts, not by how easy it is. The one that costs the most time or the most mistakes today.
  3. Run the two systems together with a clear integration, so people move to the new one without a single day when everything changes at once.
  4. Migrate the data gradually and check it. We cover this in how to migrate data from your old management system.
  5. Switch the old one off only when nobody opens it any more.

We work in two-week sprints with a working demo every 14 days, and on these projects that helps a lot. The people who use the system see each new piece before it goes into production, and that's where the forgotten rules come out.

One last thing, if the original supplier is no longer around. You need access to the source code and the database, and the fact that it's so often missing is why ownership of the code should be set down in black and white in new contracts.

Frequently asked questions

How long does a modernisation take?

It depends on how many areas there are and how tangled together they are. With a piece-by-piece approach, though, the first result reaches production within a few weeks rather than at the end of the project. That's why the total duration matters less than the fact that every phase is already useful.

Can you modernise software if the original supplier has gone?

Yes. You need access to the source code and the database. If the code isn't available you work from the data and the way the system behaves, and the analysis takes longer.

Is it better to replace it with off-the-shelf software?

Sometimes, if your processes look like everyone else's. But if the old system has survived so long because it does things specific to you, a standard product risks taking away exactly what sets you apart.

Let's find out together if we're the right partner for your project.
A twenty-minute call, no sales pitch. We work out what you need to build, what the first technical decision is and whether it makes sense to work together.
Tell us about your project

Ultimo aggiornamento: 24 settembre 2026

1. Chi siamo

ItaliansCodeItBetter S.R.L. (di seguito "ICIB", "noi", "nostro") è il titolare del trattamento dei dati personali raccolti tramite questo sito web.

Sede legale: Via Giuseppe Frua 22, 20146 Milano (MI)
Sede operativa: Viale Sabotino 19/2, 20135 Milano (MI)
Partita IVA: 14266910968
Email: vittorio@icib.dev

2. Dati che raccogliamo

Raccogliamo i seguenti dati personali esclusivamente attraverso il modulo di contatto presente sul nostro sito:

3. Come utilizziamo i tuoi dati

I dati raccolti vengono utilizzati esclusivamente per:

Non condividiamo mai i tuoi dati con terze parti per scopi commerciali o di marketing.

4. Tracking e Meta Ads

Il nostro sito utilizza Meta Pixel (Facebook Pixel) per finalità di tracciamento e ottimizzazione delle campagne pubblicitarie su Meta (Facebook e Instagram). Il pixel resta disattivato finché non presti il tuo consenso.

Meta Pixel raccoglie informazioni sulla tua visita, incluse:

Questi dati vengono utilizzati per mostrarti annunci pertinenti sui social media e per misurare l'efficacia delle nostre campagne pubblicitarie. Puoi gestire le preferenze pubblicitarie direttamente dalle impostazioni del tuo account Meta.

5. Cookie e tecnologie di tracciamento

Non utilizziamo cookie di caching sul nostro sito web. Gli unici cookie utilizzati sono quelli tecnici necessari al funzionamento del sito e alla memorizzazione della tua scelta, e quelli necessari al funzionamento di Meta Pixel come descritto nella sezione precedente.

Puoi modificare la tua scelta in qualsiasi momento: apri le preferenze cookie.

6. Base giuridica del trattamento

7. Conservazione dei dati

I tuoi dati personali vengono conservati per il tempo strettamente necessario a fornire i servizi richiesti e, in ogni caso, per un periodo non superiore a 24 mesi dalla raccolta, salvo diversi obblighi di legge. La tua scelta sui cookie viene conservata per 12 mesi, dopodiché ti verrà richiesta nuovamente.

8. I tuoi diritti (GDPR)

In conformità con il Regolamento Generale sulla Protezione dei Dati (GDPR), hai diritto a:

Per esercitare i tuoi diritti, contattaci all'indirizzo: vittorio@icib.dev

9. Sicurezza dei dati

Adottiamo misure di sicurezza tecniche e organizzative appropriate per proteggere i tuoi dati personali da accessi non autorizzati, perdita, distruzione o alterazione. Tutte le comunicazioni con i nostri server sono protette tramite protocolli di crittografia.

10. Modifiche alla Privacy Policy

Ci riserviamo il diritto di modificare questa Privacy Policy in qualsiasi momento. Le modifiche saranno pubblicate su questa pagina con indicazione della data di ultimo aggiornamento. Ti consigliamo di consultare periodicamente questa pagina per rimanere informato su come proteggiamo i tuoi dati.

11. Contatti

Per qualsiasi domanda o richiesta riguardante questa Privacy Policy o il trattamento dei tuoi dati personali, puoi contattarci a:

Email: vittorio@icib.dev
Indirizzo: Viale Sabotino 19/2, 20135 Milano (MI)

Hai anche il diritto di presentare un reclamo all'Autorità Garante per la protezione dei dati personali se ritieni che il trattamento dei tuoi dati violi il GDPR.

Data di entrata in vigore: 17 novembre 2025

1. Accettazione dei termini

Benvenuto. Accedendo al sito e utilizzando i servizi offerti da ItaliansCodeItBetter S.R.L. (di seguito "Sito"), l'utente accetta integralmente i presenti Termini di Servizio (di seguito "Termini"). Se non si è d'accordo con i Termini, non utilizzare il Sito né i servizi ivi offerti.

2. Descrizione del servizio

Il Sito è una vetrina che presenta ItaliansCodeItBetter S.R.L., la sua realtà informatica e i servizi potenziali che l'azienda potrebbe offrire. Il Sito consente agli utenti di contattare l'azienda per richiedere ulteriori informazioni o avviare un potenziale dialogo commerciale. Non sono presenti account utente, elaborazioni di pagamenti né raccolta di dati tramite il Sito, salvo i dati forniti volontariamente dall'utente attraverso contatti diretti (posta elettronica o moduli di contatto), regolati dalla normativa privacy applicabile.

Il Sito può contenere link a pagine social e ad altre risorse esterne.

3. Account utente e registrazione

Non è previsto alcun account utente o processo di registrazione sul Sito. Qualsiasi tentativo di creare, utilizzare o accedere a un account sarà considerato non conforme ai presenti Termini. Per esigenze di contatto, utilizzare l'indirizzo email indicato in "Informazioni di contatto" o i canali ufficiali della società.

4. Politica di utilizzo accettabile

L'uso del Sito deve essere diligente e conforme alla legge. È vietato:

5. Diritti di proprietà intellettuale

Tutti i diritti di proprietà intellettuale relativi al contenuto del Sito (testi, grafica, logo, codice, video, immagini, marchi) sono di proprietà di ItaliansCodeItBetter S.R.L. o dei suoi licenziatari. È vietata qualsiasi riproduzione, distribuzione, modifica o uso non autorizzato dei contenuti del Sito senza il previo consenso scritto della società, salvo quanto espressamente previsto dai presenti Termini. L'uso lecito per fini informativi è consentito solo per consultazione personale e non commerciale, purché non venga rimosso alcun avviso di copyright o proprietà.

6. Termini di pagamento

Non applicabile. Il Sito non elabora pagamenti né offre servizi tramite transazioni online. Eventuali pagamenti o accordi economici avverranno fuori dal Sito secondo contratti separati e documentazione dedicata.

7. Contenuti generati dagli utenti

Non sono previsti contenuti generati dagli utenti sul Sito (ad es. pubblicazioni, commenti o caricamenti). Qualora l'utente comunichi contenuti o feedback tramite i canali di contatto ufficiali, tali contenuti non conferiscono all'utente diritti di proprietà sul Sito o sui processi aziendali. L'azienda potrà utilizzare tali contenuti o feedback per migliorare i propri servizi, nel rispetto della normativa applicabile e della privacy dell'utente.

8. Attività vietate

Oltre a quanto specificato nel punto 4, è vietato:

9. Risoluzione

I presenti Termini si risolvono automaticamente in caso di violazione sostanziale, senza pregiudicare diritti già maturati. In caso di violazioni sostanziali, ItaliansCodeItBetter S.R.L. si riserva il diritto di sospendere o limitare l'accesso al Sito, nonché di intraprendere eventuali azioni legali necessarie. Le obbligazioni e responsabilità maturate prima della risoluzione rimangono efficaci.

10. Disclaimer e limitazioni di responsabilità

Il Sito è fornito "così com'è" e "come disponibile". ItaliansCodeItBetter S.R.L. non garantisce che il Sito sia sempre disponibile, privo di errori o interruzioni, né garantisce l'accuratezza o la completezza delle informazioni ivi contenute. In nessun caso ItaliansCodeItBetter S.R.L. sarà responsabile per danni diretti, indiretti, incidentali, consequenziali o punitivi derivanti dall'uso o dall'impossibilità di utilizzare il Sito, inclusi (senza limitazioni) perdita di profitti, dati o opportunità. Il Sito può contenere link a servizi o contenuti di terzi: tali contenuti non sono controllati dall'azienda e non comportano alcuna responsabilità.

11. Indennizzo

L'utente si impegna a manlevare e tenere indenne ItaliansCodeItBetter S.R.L., i suoi amministratori, dipendenti e affiliati da qualsiasi reclamo, perdita, responsabilità, danno, spesa o costo (incluse le spese legali) derivante dall'uso non conforme dei Termini, dalla violazione di diritti di terzi o dall'uso improprio del Sito.

12. Legge applicabile

I presenti Termini e l'uso del Sito sono disciplinati dalla legge italiana. Per qualsiasi controversia derivante dall'uso del Sito o dai presenti Termini, sarà competente in via esclusiva il Foro di Milano, salvo diverse norme inderogabili a tutela del consumatore ove applicabili.

13. Modifiche ai termini

ItaliansCodeItBetter S.R.L. si riserva il diritto di modificare i presenti Termini in qualsiasi momento. Le modifiche entrano in vigore al momento della pubblicazione sul Sito o mediante comunicazione all'utente, se prevista. L'uso continuato del Sito dopo la pubblicazione delle modifiche costituisce accettazione delle nuove condizioni.

14. Informazioni di contatto

ItaliansCodeItBetter S.R.L.
Indirizzo: Via Giuseppe Frua 22, 20146 Milano, Lombardia, Italia
Email: vittorio@icib.dev

Note finali

Per la protezione dei dati personali si rinvia alla Privacy Policy del Sito e alle modalità di trattamento indicate nelle comunicazioni ufficiali dell'azienda. Qualsiasi contatto o richiesta inviata all'indirizzo email indicato può comportare il trattamento di dati personali secondo la normativa vigente.

Last updated: 24 September 2026

English translation for convenience. The Italian version prevails in case of discrepancy.

1. Who we are

ItaliansCodeItBetter S.R.L. (hereinafter "ICIB", "we", "our") is the data controller for the personal data collected through this website.

Registered office: Via Giuseppe Frua 22, 20146 Milano (MI)
Operational office: Viale Sabotino 19/2, 20135 Milano (MI)
VAT number: 14266910968
Email: vittorio@icib.dev

2. Data we collect

We collect the following personal data exclusively through the contact form on our website:

3. How we use your data

The data collected is used exclusively to:

We never share your data with third parties for commercial or marketing purposes.

4. Tracking and Meta Ads

Our website uses Meta Pixel (Facebook Pixel) to track and optimise advertising campaigns on Meta (Facebook and Instagram). The pixel stays disabled until you give your consent.

Meta Pixel collects information about your visit, including:

This data is used to show you relevant ads on social media and to measure the effectiveness of our advertising campaigns. You can manage your ad preferences directly from your Meta account settings.

5. Cookies and tracking technologies

We do not use caching cookies on our website. The only cookies used are the technical cookies needed for the website to work and to store your choice, and those needed for Meta Pixel to work as described in the previous section.

You can change your choice at any time: open cookie preferences.

6. Legal basis for processing

7. Data retention

Your personal data is kept only for as long as strictly necessary to provide the services requested and, in any case, for no longer than 24 months from collection, unless other legal obligations apply. Your cookie choice is kept for 12 months, after which you will be asked again.

8. Your rights (GDPR)

In accordance with the General Data Protection Regulation (GDPR), you have the right to:

To exercise your rights, contact us at: vittorio@icib.dev

9. Data security

We adopt appropriate technical and organisational security measures to protect your personal data against unauthorised access, loss, destruction or alteration. All communications with our servers are protected by encryption protocols.

10. Changes to this Privacy Policy

We reserve the right to change this Privacy Policy at any time. Changes will be published on this page together with the date of the last update. We recommend checking this page regularly to stay informed about how we protect your data.

11. Contact

For any question or request about this Privacy Policy or the processing of your personal data, you can contact us at:

Email: vittorio@icib.dev
Address: Viale Sabotino 19/2, 20135 Milano (MI)

You also have the right to lodge a complaint with the Garante per la protezione dei dati personali (the Italian Data Protection Authority) if you believe that the processing of your data infringes the GDPR.

Effective date: 17 November 2025

English translation for convenience. The Italian version prevails in case of discrepancy.

1. Acceptance of the terms

Welcome. By accessing the website and using the services offered by ItaliansCodeItBetter S.R.L. (hereinafter the "Site"), the user fully accepts these Terms of Service (hereinafter the "Terms"). If you do not agree with the Terms, do not use the Site or the services offered on it.

2. Description of the service

The Site is a showcase presenting ItaliansCodeItBetter S.R.L., its IT business and the potential services the company may offer. The Site allows users to contact the company to request further information or to start a potential business conversation. There are no user accounts, no payment processing and no data collection through the Site, except for data provided voluntarily by the user through direct contact (email or contact forms), which is governed by the applicable privacy legislation.

The Site may contain links to social media pages and other external resources.

3. User accounts and registration

The Site has no user accounts and no registration process. Any attempt to create, use or access an account will be considered a breach of these Terms. To get in touch, use the email address shown under "Contact information" or the company's official channels.

4. Acceptable use policy

The Site must be used with due care and in compliance with the law. It is forbidden to:

5. Intellectual property rights

All intellectual property rights in the content of the Site (text, graphics, logo, code, videos, images, trademarks) belong to ItaliansCodeItBetter S.R.L. or its licensors. Any reproduction, distribution, modification or unauthorised use of the Site's content without the company's prior written consent is forbidden, except as expressly provided in these Terms. Lawful use for information purposes is permitted only for personal, non-commercial consultation, provided that no copyright or ownership notice is removed.

6. Payment terms

Not applicable. The Site does not process payments or offer services through online transactions. Any payments or financial arrangements will take place outside the Site under separate contracts and dedicated documentation.

7. User-generated content

The Site does not allow user-generated content (e.g. posts, comments or uploads). If the user sends content or feedback through the official contact channels, such content does not give the user any ownership rights over the Site or the company's processes. The company may use such content or feedback to improve its services, in compliance with applicable legislation and the user's privacy.

8. Prohibited activities

In addition to what is set out in section 4, the following are forbidden:

9. Termination

These Terms terminate automatically in the event of a material breach, without prejudice to rights already accrued. In the event of material breaches, ItaliansCodeItBetter S.R.L. reserves the right to suspend or restrict access to the Site and to take any legal action necessary. Obligations and liabilities accrued before termination remain in effect.

10. Disclaimer and limitation of liability

The Site is provided "as is" and "as available". ItaliansCodeItBetter S.R.L. does not guarantee that the Site will always be available or free from errors or interruptions, nor does it guarantee the accuracy or completeness of the information it contains. In no event will ItaliansCodeItBetter S.R.L. be liable for direct, indirect, incidental, consequential or punitive damages arising from the use of, or inability to use, the Site, including (without limitation) loss of profits, data or opportunities. The Site may contain links to third-party services or content: such content is not controlled by the company and does not give rise to any liability on its part.

11. Indemnification

The user agrees to indemnify and hold harmless ItaliansCodeItBetter S.R.L., its directors, employees and affiliates from any claim, loss, liability, damage, expense or cost (including legal fees) arising from use that does not comply with the Terms, from the infringement of third-party rights or from improper use of the Site.

12. Governing law

These Terms and the use of the Site are governed by Italian law. Any dispute arising from the use of the Site or from these Terms will fall under the exclusive jurisdiction of the Court of Milan (Foro di Milano), except where mandatory consumer protection rules provide otherwise.

13. Changes to the terms

ItaliansCodeItBetter S.R.L. reserves the right to change these Terms at any time. Changes take effect when they are published on the Site or, where applicable, when they are communicated to the user. Continued use of the Site after the changes are published constitutes acceptance of the new terms.

14. Contact information

ItaliansCodeItBetter S.R.L.
Address: Via Giuseppe Frua 22, 20146 Milano, Lombardia, Italia
Email: vittorio@icib.dev

Final notes

For the protection of personal data, please refer to the Site's Privacy Policy and to the processing methods set out in the company's official communications. Any contact or request sent to the email address shown may involve the processing of personal data in accordance with the laws in force.