Skip to content
Web Development20 min read

Legacy Software Modernization: A Practical Roadmap for UAE Companies

A practical legacy software modernisation roadmap for UAE companies: risk scoring, six options, strangler fig, Arabic data migration, testing and e-invoicing.

01

What is software modernisation, and how should UAE companies approach it?

Software modernisation is the planned change of an ageing application so that it is secure, supportable and able to meet new business and regulatory demands, without stopping the operations it supports. For most UAE companies the safest route is incremental: assess each system's risk, choose one of six options per system, and replace capability in small, reversible slices rather than through one big rewrite.

Many UAE businesses run on systems built a decade or more ago: a customised ERP, an in-house order portal, a booking tool written by a developer who has since left, or a spreadsheet-and-macro process that grew into a critical system. These systems often still work. The problem is that they become harder to secure, harder to connect to new channels and harder to change when rules change. UAE e-invoicing is the most visible current example, but Arabic customer journeys, new payment providers and AI projects all expose the same limits.

This guide is the UAE-focused companion to our general guides on AI-assisted legacy code modernisation and the ecommerce technology modernisation roadmap. Here we cover how to assess legacy risk, how to choose between modernisation options, how to apply the strangler fig pattern, how to migrate data (including Arabic text) and how to sequence the work so operations keep running. Facts are sourced; recommendations are labelled as ours; examples are hypothetical. Nothing here is tax or legal advice.

02

Key takeaways

  • Modernise for a reason, not because a system is old: security, end of support, skills, integration and compliance are the five risks worth scoring.
  • There are six practical options per system: retain, refactor, replatform, rearchitect, replace (repurchase) and retire. AWS's ‘7 Rs’ add rehost and relocate for cloud moves.
  • Map dependencies before choosing an option. Most modernisation failures come from an integration, report or batch job nobody listed.
  • Prefer incremental change. The strangler fig pattern routes traffic through a façade and moves one capability at a time, so each step can be reversed.
  • UAE e-invoicing is a hard deadline for ERP and invoicing systems: businesses with revenue of AED 50 million or more go live on 1 January 2027, and the rest on 1 July 2027, according to the FTA.
  • Treat Arabic data as a migration risk in its own right: encoding, collation, normalisation and right-to-left display all need explicit tests.
  • Characterisation tests and parallel runs prove the new system behaves like the old one before you switch users over.
  • Write the rollback plan before the cutover plan, and decide in advance what result triggers it.
03

Technical debt: why working systems become a business risk

Technical debt is the accumulated cost of past shortcuts and outdated choices in a system: code, data structures, dependencies and infrastructure that work today but make every future change slower, riskier or more expensive. Like financial debt, it charges interest. Each new feature takes longer, each fix risks breaking something else, and eventually the team spends more time keeping the system alive than improving it.

Martin Fowler describes the pattern well: changes ‘are often done by building patch upon patch, each patch making it harder to adapt to future changes. Eventually people realize that they can't patch any more, and need a wholesale modernization’ (Martin Fowler, Strangler Fig Application). The aim of a modernisation roadmap is to act before that point, and to avoid replacing patch-upon-patch with one enormous, risky rewrite.

Technical debt is not only a code problem. In UAE businesses we often see it in four places: business rules that live only in old stored procedures or a consultant's memory; integrations built as file drops or direct database writes; data with duplicate customers, inconsistent Arabic and English names, and free-text fields used for structured information; and infrastructure running on an unsupported operating system or runtime. Newer automation creates its own debt too; our guide to AI automation technical debt covers how AI workflows decay when nobody owns them.

Worth noting

Our recommendation: write down the interest you are paying before you plan the cure. Examples: hours spent on manual workarounds each month, releases delayed by fear of breaking the system, incidents linked to the legacy platform, and new requirements you have had to refuse. These become your baseline for judging whether modernisation worked.

04

Start with an inventory and a dependency map

You cannot modernise what you have not listed. The first deliverable of any programme should be an application inventory and a dependency map, not a target architecture. The inventory records every system, who owns it, what it does, what runs it and how critical it is. The dependency map records how systems talk to each other, including the connections nobody designed on purpose.

What to capture for each system: business owner and technical owner; business capabilities it supports (for example quoting, invoicing, stock, bookings); users and volumes; technology stack and versions; hosting location; data stores and the categories of data held (personal, financial, health); inbound and outbound integrations; scheduled jobs and reports; and known pain points.

Where hidden dependencies live: nightly batch jobs and scheduled exports; reports finance runs at month-end; spreadsheets that query the database directly; shared database tables written by two applications; hard-coded IP addresses and file paths; email-based workflows; and integrations with banks, couriers, government portals or payment providers. Talk to the people who run month-end and year-end, not only to IT.

A simple text map is enough to start. The example below is hypothetical.

Illustrative dependency map for a legacy ERP
[Web order portal] --orders (direct DB write)--> [Legacy ERP DB]
[Legacy ERP] --invoice PDF (email)--> [Customers]
[Legacy ERP] --nightly CSV--> [Warehouse system]
[Legacy ERP DB] <--read-only query-- [Finance Excel model]
[Courier portal] --manual re-keying--> [Legacy ERP]
[Legacy ERP] --?--> [E-invoicing ASP]   (not yet built)

Risk notes:
- Two systems write to the ERP database directly
- Finance model breaks if column names change
- Courier data is re-keyed by hand
05

Legacy risk assessment: a five-factor scorecard

Once systems are listed, score each one. We use five risk factors, each scored from 1 (low) to 5 (high). The scores are a prioritisation tool, not a precise measurement; agree them with the business owner, and record the evidence behind each number.

Risk factorWhat to checkWarning signsScore 1–5
SecurityPatch levels, known vulnerabilities, authentication, encryption, loggingUnpatched components, shared admin accounts, no audit log, passwords stored weakly—
Support and end of lifeVendor support dates for the OS, database, runtime, framework and any packaged softwareRuntime past security support; vendor no longer issues fixes; licence tied to old hardware—
SkillsWho can change and operate the system; documentation; availability of the language or platform in the marketOne person knows it; no documentation; developers reluctant to touch it—
IntegrationAPIs, data export options, ability to connect to payments, couriers, CRM, ASPs and AI toolsOnly file drops or direct database access; no API; re-keying between systems—
ComplianceAbility to meet e-invoicing, data protection, sector rules and Arabic requirementsCannot produce required invoice data; cannot locate or delete personal data on request; Arabic stored or printed incorrectly—

Pro tip

Check runtime support dates against the official schedules, not memory. For example, php.net lists PHP 8.1 and earlier as end of life and PHP 8.2 security support ending on 31 December 2026, while the Node.js project lists v20 as end of life and says production applications should only use Active LTS or Maintenance LTS releases (both checked 9 October 2026). A system on an end-of-life runtime scores high on support and security at once.

06

The UAE angle: e-invoicing, Arabic and data location

UAE facts: e-invoicing. The Federal Tax Authority's timeline for B2B and B2G e-invoicing requires businesses with revenue of AED 50 million or more to appoint an accredited service provider (ASP) by 30 October 2026 and go live on 1 January 2027; businesses below AED 50 million must appoint an ASP by 31 March 2027 and go live on 1 July 2027 (FTA). For many companies this is the first hard regulatory deadline their ERP or invoicing system has faced.

Readiness is uneven. A 2026 ClearTax survey of UAE finance leaders found that 38% said their ERP cannot natively produce the PINT AE XML format the system uses, and 60.5% had not carried out an ERP gap analysis (ClearTax via Zawya). ClearTax sells e-invoicing software and the sample leans towards larger companies, so treat the figures as a directional signal rather than a market measurement.

Our recommendation. Make the ERP gap analysis the first slice of your modernisation programme if you invoice businesses or government. Check whether your system holds every field the e-invoice needs in structured form (not free text), whether it can export or transmit to your ASP through an API, whether customer and supplier master data is clean enough to pass validation, and how credit notes and corrections are handled. The outcome tells you whether you can retain the ERP with an integration layer, need to upgrade it, or should replace it. Confirm the requirements with your tax adviser and ASP. For automating the documents around invoicing, see AI document processing in the UAE.

UAE facts: Arabic. Consumer invoices in the UAE must be in Arabic (other languages are optional), and UAE-registered ecommerce businesses must provide product and service information in Arabic, according to the government's consumer protection guidance (u.ae). Many legacy systems were built for English only: they print Arabic in reversed or disconnected letters, truncate Arabic names, or cannot lay out a right-to-left screen. Retrofitting right-to-left support into an old user interface is often harder than it looks, which is one reason customer-facing front ends are good early candidates for replacement. Our guide to multilingual website development in the UAE covers bilingual design in depth.

Data location. If a system holds health data, banking data or government data, moving it is not only a technical decision. Federal and emirate-level rules restrict where some of this data can be stored or processed. We cover what the sources say, and where to take advice, in our companion guide to cloud migration for UAE businesses.

07

Six modernisation options, mapped to the AWS 7 Rs

Every system on your inventory needs a decision. We group the choices into six options. AWS's prescriptive guidance describes ‘seven migration strategies for moving applications to the cloud, known as the 7 Rs’: retire, retain, rehost, relocate, repurchase, replatform, and refactor or re-architect (AWS Prescriptive Guidance). That list is designed for cloud moves; for modernisation we split refactoring from rearchitecting because the effort and risk differ so much, and treat rehost and relocate as hosting moves rather than modernisation.

OptionWhat it meansClosest AWS 7 Rs termTypical fit
RetainKeep the system largely as is; fix the highest risks (patching, access control, backups) and wrap it with an API or integration layerRetainStable systems with low change demand, or where data residency or a pending replacement makes moving premature
RefactorImprove the internal structure of the code without changing what it does: remove dead code, upgrade libraries, add testsPart of refactor or re-architectValuable systems with sound design but accumulated mess
ReplatformMove to a newer runtime, database or managed service with limited code changeReplatform (‘lift, tinker, and shift’)Systems on end-of-life runtimes or self-managed servers
RearchitectChange the structure, for example splitting a monolith into modules or services, or rebuilding a capability on a new stackRefactor or re-architectCore systems that must scale or change much faster than today
Replace (repurchase)Move to a packaged product or SaaS and migrate the dataRepurchase (‘drop and shop’)Commodity capabilities: accounting, HR, CRM, standard ERP functions
RetireSwitch the system off after archiving the data you must keepRetireDuplicated or little-used systems

Worth noting

AWS calls refactor ‘the most complex and costly of the migration strategies’ and, for large migrations, recommends rehosting, relocating or replatforming first and modernising after the move. That advice is about cloud migration, but the principle carries over: separate the hosting move from the code change where you can, so you are not debugging both at once.

08

Decision matrix: which option fits which system?

The matrix below is our own framework for a first-pass decision. Read across the criteria for a system and see which option the evidence favours. It is a starting point for discussion with the business owner, not a formula.

CriterionRetainRefactorReplatformRearchitectReplaceRetire
Business differentiationLow to mediumHighMediumHighLow (commodity)None
Rate of change neededLowMediumLow to mediumHighDepends on product roadmapNone
Code quality and designAcceptableSound design, messy codeAcceptablePoor fit for future needsIrrelevantIrrelevant
End-of-life runtime or platformOnly with mitigationsPartly addressesStrong fitStrong fitStrong fitStrong fit
Integration needs (APIs, ASP, payments)Add a wrapper or integration layerModerateModerateStrong fitCheck product APIsN/A
Compliance gap (e-invoicing, Arabic, data location)Only if gap is smallSometimesSometimesStrong fitCheck product meets UAE needsArchive must still comply
Relative effort and riskLowestLow to mediumMediumHighestMedium (data and process change)Low

Pro tip

If a capability is standard across your industry, buying is usually cheaper than building. If it is how you win customers, owning it usually pays back. Our guide to custom software vs SaaS in the UAE works through that decision in detail.

09

The strangler fig pattern: modernising without a big-bang rewrite

The strangler fig pattern is the most reliable way we know to modernise a core system while the business keeps using it. Martin Fowler named it after the strangler fig, which grows around a host tree and gradually replaces it: ‘This gradual process of replacing the host tree struck me as a striking analogy to the way I saw colleagues doing modernization of legacy software systems.’ He notes that the term is ‘now often used to describe a gradual approach to legacy modernization’ (Martin Fowler, 2024).

Microsoft's Azure Architecture Center defines the pattern as a way to ‘incrementally migrate a legacy system by gradually replacing specific pieces of functionality with new applications and services’. The mechanism is simple: ‘A façade (proxy) intercepts requests that go to the back-end legacy system’ and routes each one to either the old or the new implementation (Microsoft, Strangler Fig pattern). Over time more routes point to the new system, until the old one can be retired.

Microsoft's cautions are worth repeating. Make sure the façade does not become a single point of failure or a performance bottleneck. Use an anti-corruption layer where old and new systems call each other, so the new design is not polluted by the old data model. And the pattern does not suit cases where requests to the back-end system cannot be intercepted, where you cannot access the legacy system's source code, or where the system is small and replacing it whole is simple.

Strangler fig routing over time (illustrative)
Phase 1         Phase 2          Phase 3

 Users           Users            Users
   |               |                |
[Facade]        [Facade]         [Facade]
   |             /    \               |
[Legacy]     [New:    [Legacy]     [New: all
             quotes,  (orders,     capabilities]
             invoices] stock)

Anti-corruption layer translates between
the new model and legacy data where they meet.

Key takeaway

Pick the first slice carefully. Good first slices have clear boundaries, visible value and a contained data set, for example invoice generation for e-invoicing, a customer portal or a quoting tool. Avoid starting with the most entangled part of the system.

10

Data migration: mapping, cleansing, reconciliation and Arabic text

Data is where modernisation projects most often slip. Code can be rewritten; ten years of customers, invoices, contracts and stock history must be carried across accurately or archived in a way you can still use. Plan data migration as its own workstream with its own owner.

Mapping. Document every source field, its meaning, its target field and any transformation. Expect to find fields used for a different purpose than their name suggests, codes whose meaning changed over the years, and free-text fields holding structured information such as tax numbers or delivery instructions.

Cleansing. Decide what to fix before migration, what to fix after, and what to leave behind. Typical work includes merging duplicate customers, standardising addresses, filling mandatory fields the new system requires (e-invoicing master data is a common example) and agreeing how inactive records are archived.

Reconciliation. Prove the migration is complete and correct with record counts per entity, control totals (for example the sum of open invoices and stock value by warehouse), field-level comparisons on samples, and sign-off by the business owner. Run the full migration several times in rehearsal, not once on cutover weekend. For a database moved slice by slice, Microsoft's strangler fig guidance describes extracting one domain at a time with an initial load plus change data capture to keep old and new in sync until cutover.

Arabic text. Arabic deserves explicit tests because problems are easy to miss with English sample data. These are general issues to check, not a list of faults in any particular product.

  • Encoding: confirm whether legacy data is stored as Unicode or in an older Arabic code page (Windows-1256 and ISO-8859-6 are common). Converting with the wrong assumption produces unreadable text that is hard to repair later.
  • Collation and sorting: the new database's collation controls how Arabic sorts, compares and matches. Test search, uniqueness checks and alphabetical reports against the old system's results.
  • Normalisation: decide how to treat variant letter forms (for example different alef and ya forms), diacritics and the tatweel (elongation) character in names and search, so the same customer is not stored twice.
  • Mixed-direction text: addresses and product names that mix Arabic, Latin and numbers can display in the wrong order. Check screens, PDFs, invoices, emails and SMS output, not only the database.
  • Field lengths: Arabic text can need more bytes than its English equivalent in some encodings; check for silent truncation.
  • Bilingual pairs: if records hold Arabic and English names, migrate them as linked fields rather than separate records.
11

Testing: characterisation tests and parallel runs

Legacy systems rarely come with a test suite, and their real specification is how they behave today, quirks included. Two techniques make modernisation safer.

Characterisation tests. A characterisation test records what the existing system actually does for a given input, and then checks that the new system does the same. The term was popularised by Michael Feathers in his work on legacy code. You are not judging whether the behaviour is correct; you are pinning it down so any change is deliberate. For an invoicing slice, that might mean taking a few hundred real historical orders, running them through both systems, and comparing totals, VAT, rounding, discounts and document numbering line by line.

Parallel runs. In a parallel run, old and new systems process the same live transactions for a period, and the outputs are compared before the new system becomes the system of record. It costs effort, because someone must investigate every difference, but it catches the rules nobody documented. Agree up front how long the parallel run lasts, which differences are acceptable, and who signs off.

The rest of the test plan. Add integration tests for every dependency on your map, performance tests at month-end volumes, security tests on the new components, user acceptance testing with the people who use the system daily, and Arabic and right-to-left checks on every user-facing output. The general legacy code modernisation guide covers test-first refactoring in more depth.

12

Rollback plans: decide how to undo before you cut over

Every slice needs a rollback plan written before the cutover plan. A rollback plan answers three questions: what result will make us reverse the change, how do we reverse it, and what happens to transactions created in the new system before we reversed.

Our recommendation. Define rollback triggers in measurable terms, such as reconciliation differences above an agreed threshold, failed integrations with banks, couriers or your ASP, or error rates above an agreed level within the first hours. Keep the legacy system available and in sync (or able to be brought back into sync) until the new slice has proved itself. With a strangler fig façade, rollback can be as simple as switching a route back, which is one of the pattern's main advantages. Rehearse the rollback at least once, because an untested rollback is a hope, not a plan.

For websites and customer-facing platforms, rollback also covers URLs, redirects and search visibility. Our website migration guide and website replatforming guide cover those risks.

13

An incremental roadmap that keeps operations running

The roadmap below is our recommended structure. Durations depend on the size of the system and are deliberately left out; each phase ends with a decision gate, not a date.

PhaseMain activitiesOutputsDecision gate
0. FrameAgree business goals, constraints and deadlines (e.g. e-invoicing go-live); name ownersOne-page modernisation briefIs there a clear business reason and an owner?
1. AssessInventory, dependency map, five-factor risk scores, e-invoicing and Arabic gap checksRisk-ranked system list; dependency mapWhich systems need action, and which can wait?
2. DecideApply the decision matrix per system; choose first slices; outline target architectureOption per system; sequenced slice backlogDo the first slices deliver visible value with contained risk?
3. StabilisePatch, back up, secure access, add monitoring and characterisation tests to systems being retained or strangledSafer baseline; test harnessCan we change the legacy system without fear?
4. Build the seamsFaçade or routing layer, integration layer or API wrapper, data syncRouting in place with no behaviour changeDoes traffic flow through the façade without issues?
5. Migrate slice by sliceBuild, migrate data, test, parallel run, cut over, monitor; repeatCapabilities moved one at a timeDid reconciliation and parallel run pass? Is rollback ready?
6. Retire and improveArchive data, switch off legacy components, update documentation and runbooksSmaller legacy footprint; lower running costWhat is the next slice, or are we done?

Worth noting

Phases 3 and 4 are often skipped because they produce nothing users can see. They are what make the later slices fast and reversible. If you are planning a wider transformation, our UAE SME digital transformation roadmap shows where modernisation sits alongside customer, data and AI work.

14

Hypothetical examples

These examples are illustrative composites, not ZSpace clients or real companies. Any numbers are placeholders.

Hypothetical example 1: a building-materials distributor with a customised ERP. A mainland distributor runs an on-premises ERP customised over many years, with a web order portal writing directly to its database and invoices emailed as PDFs. Its revenue puts it in the first e-invoicing wave. The assessment scores the ERP high on compliance and integration risk, medium on skills and low on business differentiation. Decision: retain the ERP core for now, build an integration layer to the chosen ASP, clean customer master data, and move invoice generation behind an API as the first slice. The order portal, which competitors also offer, is scheduled for replacement once the integration layer exists. A full ERP replacement is deferred to a later, planned project rather than rushed before the deadline.

Hypothetical example 2: a Dubai service company with an in-house booking system. A home-services company relies on a PHP booking tool written by a contractor who has left. It runs on an end-of-life PHP version, has no tests and cannot show Arabic properly. Decision: stabilise first (patch what can be patched, restrict admin access, add backups and monitoring), write characterisation tests around pricing and scheduling, then use a façade to move the customer-facing booking journey to a new bilingual front end while scheduling stays in the old system. Scheduling moves in a second slice once the team understands its rules. The company keeps taking bookings throughout.

Hypothetical example 3: retiring before modernising. A trading company finds three internal tools that duplicate features in its accounting package, used by two people between them. Retiring them, after archiving their data, removes three sets of security and support risks for very little effort. Not every item on the roadmap is a build.

15

Where AI fits in a modernisation programme

AI coding tools can shorten the slow parts of modernisation: reading unfamiliar code, explaining stored procedures, drafting documentation and characterisation tests, and proposing refactors. AI document processing can help with data cleansing and with turning paper-based steps into structured data. These are real gains, particularly where the original developers are gone.

They do not change the fundamentals. Generated code still needs review and must pass the same tests. Data still needs reconciliation. And sending proprietary code or customer data to an external AI tool is a data-handling decision that should follow your policies. Our guides to AI legacy code modernisation and enterprise AI integration go deeper, and modernisation often comes before AI: an AI assistant cannot use data locked in a system with no API. If you are connecting modernised systems, see API integration for UAE businesses.

16

Common mistakes

  • Starting with the target architecture before the inventory and dependency map exist.
  • The big-bang rewrite: freezing the old system for a year and switching everything on one weekend.
  • Choosing one option for every system, such as ‘move everything to SaaS’, instead of deciding per system.
  • Underestimating data: treating migration as a one-off script rather than a rehearsed, reconciled workstream.
  • Testing only in English, then discovering broken Arabic on printed invoices after go-live.
  • No rollback plan, or one that has never been rehearsed.
  • Leaving e-invoicing to the last quarter, when ERP gaps take time to fix and ASPs have onboarding queues of their own.
  • Forgetting to retire: keeping the old system running indefinitely ‘just in case’, so running costs and risks never fall.
  • Modernising the code but not the ownership, so the new system drifts into the same state. Our website maintenance guide covers ongoing ownership.
17

Choosing who does the work

Modernisation needs people who are comfortable with old systems and new ones, and who will tell you when the right answer is to retain or retire rather than rebuild. Whether you use an in-house team, a local firm or a remote partner, ask how they assess legacy risk, how they handle data migration and Arabic data, what their rollback approach is, and how they hand over documentation and access so you are not locked in.

Our guide to choosing a software development company in the UAE sets out the questions to ask, and digital product development for the GCC covers how modernised systems fit into a wider product roadmap. Before you change hosting as part of the work, run through our website security checklist so the new platform starts from a secure baseline.

18

Sources

Modernisation patterns: Martin Fowler, Strangler Fig Application (2024); Microsoft Azure Architecture Center, Strangler Fig pattern; AWS Prescriptive Guidance, migration strategies (7 Rs).

UAE e-invoicing and consumer rules: Federal Tax Authority, e-invoicing timeline; ClearTax 2026 readiness study via Zawya (vendor survey); u.ae consumer protection.

Runtime support schedules: PHP supported versions; Node.js releases.

Dates and requirements change; re-check them before relying on them. Nothing here is ZSpace client data, and nothing is tax or legal advice.

19

Conclusion

Legacy software modernisation in the UAE is less about chasing new technology and more about removing specific risks on a sensible timetable. List your systems, map how they connect, score them on security, support, skills, integration and compliance, and choose an option per system. Then move in small, tested, reversible slices, starting where the deadline or the value is clearest. For many companies in 2026 that starting point is the ERP gap analysis for e-invoicing.

The companies that do this well rarely rewrite everything. They retain what is stable, replace what is commodity, retire what is unused, and rebuild only what makes them different, keeping the business running the whole way through.

Weighing up a legacy system?

ZSpace Labs is an India-based, remote-first technology studio that works with UAE and global businesses on web applications and custom software, bilingual interfaces and automation. If an outside view on your modernisation options would help, we are happy to talk it through.

Start a Project
FAQ

Common questions.

Software modernisation is the work of changing an ageing application so it is safer, cheaper to run and easier to change, while keeping the business running. It can mean keeping the system and fixing its riskiest parts, moving it to a new platform, restructuring its code, replacing it with a packaged product or retiring it. The right choice differs by system, so most companies end up using several options at once.

Get in touch

Have a project in mind?

Whether you're building a new digital product, improving an existing website, or looking to automate part of your business — let's talk.