[{"data":1,"prerenderedAt":985},["ShallowReactive",2],{"blog-article-en-modernise-legacy-software-without-stopping-operations":3,"blog-related-en-modernise-legacy-software-without-stopping-operations":667},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"seoTitle":10,"locale":7,"translationSlug":11,"date":12,"updated":13,"image":14,"author":15,"tags":18,"takeaways":22,"faq":28,"body":50,"_type":661,"_id":662,"_source":663,"_file":664,"_stem":665,"_extension":666},"/blog/modernise-legacy-software-without-stopping-operations","blog",false,"en","The Old System Nobody Wants to Touch: How to Modernise It Without Stopping Operations","Access, Visual Basic, Delphi or a 15-year-old ERP: how to replace old software one module at a time, migrate data in parallel and keep the business running.","Modernise Legacy Software Without Stopping Operations","modernizar-software-legado-sem-parar-operacao","2026-09-12","2026-11-14","/images/blog/modernizar-software-legado.jpg",{"name":16,"role":17},"Pedro Santos","Principal Software Architect",[19,20,21],"Custom Software","ERP","Costs & Decision",[23,24,25,26,27],"Replacing an old system in one go is the riskiest way to modernise it. The safe route is to swap one module at a time, with the old system still running until the very last day.","The value of an old system is not in its code, it is in the business rules nobody ever wrote down. Extracting them before you build is what separates a calm replacement from months of surprises.","Every new module runs in parallel with the old one for a while, with totals and stock levels compared side by side, and the old part is only switched off once the numbers match.","Artificial intelligence reads and documents old code far faster than people can, but it does not decide which of the rules it finds still apply. That validation is still done with the people who know the operation.","A first module typically costs between €7,500 and €15,000 when it is an automated process, or between €15,000 and €25,000 when it is a single-scope portal, and goes into production in 6 to 12 weeks, followed by two to four weeks running in parallel with the old system.",[29,32,35,38,41,44,47],{"q":30,"a":31},"Can a system built in Access or Visual Basic be replaced without stopping the business?","Yes, as long as the replacement is done module by module rather than all at once. Each new area runs alongside the old one for a few weeks, and the old part is only switched off when the results match. At no point is the company left without a working system.",{"q":33,"a":34},"What does replacing a system module by module actually mean?","It means building the new system one area at a time, connected to the same information as the old one, and moving each function across as it becomes ready. In engineering this is called the strangler pattern. The old system keeps shrinking until it has nothing left to do, and every step is small enough to be rolled back.",{"q":36,"a":37},"Is historical data lost in the migration?","No. The data the operation uses moves to the new system through an automated process that is rehearsed several times before the final cut-over, and the full history is archived in a format you can consult without the old application. Part of the data clean-up needs decisions from the business, and it pays to take them early.",{"q":39,"a":40},"Can artificial intelligence rewrite the old system on its own?","No, and it should not. AI is very useful for reading and explaining old code and for producing a first catalogue of business rules, but it does not know which of those rules still apply. Translating the code line by line into a modern language gives you the same system with the same bad habits.",{"q":42,"a":43},"How much does it cost to modernise an old system?","It depends on the module: between €7,500 and €15,000 for an automated process, between €15,000 and €25,000 for a single-scope portal, and from €45,000 when the new system becomes the centre of the operation. A full replacement is phased over several months, with the investment following the results of each phase.",{"q":45,"a":46},"When is it better to buy an off-the-shelf product than to replace with custom software?","When what the old system does is generic, such as invoicing, accounting or payroll. Invoicing software in Portugal has to be certified by the Tax Authority, and certified products keep up with those requirements. Custom development makes sense for the part of the operation that no product models well.",{"q":48,"a":49},"We have a prototype of the new module built with AI. Can it be reused?","Usually, yes. A prototype built in ChatGPT, Claude, Gemini or tools such as Lovable or Cursor shows the screens and rules the team wants, which shortens the discovery work and lowers the price. What it lacks is what makes the replacement safe: user accounts, migrated real data, a connection to the ERP and the old system, backups and testing.",{"type":51,"children":52,"toc":636},"root",[53,61,66,80,87,92,98,103,108,114,119,149,155,160,165,170,175,181,192,202,212,218,231,236,241,246,252,257,262,269,274,279,285,290,295,300,306,312,317,323,328,348,354,359,365,370,376,381,387,392,515,535,540,552,558,563,568,573,579,607],{"type":54,"tag":55,"props":56,"children":57},"element","p",{},[58],{"type":59,"value":60},"text","In many companies with twenty or thirty years behind them there is a computer\nthat nobody dares to switch off. It sits on a desk in the corner, or on a small\nserver in the filing room, runs a version of Windows nobody installs any more,\nand holds the application where orders are entered, customer prices are\ncalculated or next week's production is planned. It was built in Access, Visual\nBasic 6, Delphi or FoxPro by someone who knew the business like few others and\nwho has since retired or moved on. It works, and everyone knows it works.\nEveryone also knows that, on the day it stops working, nobody is quite sure what\nto do.",{"type":54,"tag":55,"props":62,"children":63},{},[64],{"type":59,"value":65},"In other companies it is an Excel workbook full of VBA macros that has grown for\na decade, or an ERP built to measure fifteen years ago by a software house that\nhas since closed, with support reduced to the mobile number of someone who still\npicks up out of goodwill.",{"type":54,"tag":55,"props":67,"children":68},{},[69,71,78],{"type":59,"value":70},"This article is about replacing that system without the operation noticing.\nKeeping it and adding AI on top is a different conversation, which we covered in\nthe article on ",{"type":54,"tag":72,"props":73,"children":75},"a",{"href":74},"/en/blog/add-ai-to-existing-business-software",[76],{"type":59,"value":77},"adding AI to the software your company already\nuses",{"type":59,"value":79},".",{"type":54,"tag":81,"props":82,"children":84},"h2",{"id":83},"short-answer",[85],{"type":59,"value":86},"Short answer",{"type":54,"tag":55,"props":88,"children":89},{},[90],{"type":59,"value":91},"An old system is modernised without stopping operations by replacing it module\nby module. You build one new area at a time, connected to the same information,\nrun it for two to four weeks in parallel with the old one, and only switch off\nthe old part once the numbers match. Before building, you extract the business\nrules hidden in the code. A first module typically costs between €7,500 and\n€15,000 when it is an automated process, or between €15,000 and €25,000 when it\nis a single-scope portal, and goes into production in 6 to 12 weeks.",{"type":54,"tag":81,"props":93,"children":95},{"id":94},"replace-it-piece-by-piece-with-the-old-one-still-on",[96],{"type":59,"value":97},"Replace it piece by piece, with the old one still on",{"type":54,"tag":55,"props":99,"children":100},{},[101],{"type":59,"value":102},"A critical system is replaced in parts. You pick a well-defined area, build the\nnew version of that area, run it alongside the old one until the results match,\nand only then switch the old part off. Then you move on to the next. At every\nmoment the company has a system that works, and every step is small enough to be\nreversed.",{"type":54,"tag":55,"props":104,"children":105},{},[106],{"type":59,"value":107},"The modernisation projects that go badly have usually tried the opposite.",{"type":54,"tag":81,"props":109,"children":111},{"id":110},"signs-the-old-system-has-become-a-risk",[112],{"type":59,"value":113},"Signs the old system has become a risk",{"type":54,"tag":55,"props":115,"children":116},{},[117],{"type":59,"value":118},"None of these signs, on its own, forces a change. Three or four together do:",{"type":54,"tag":120,"props":121,"children":122},"ul",{},[123,129,134,139,144],{"type":54,"tag":124,"props":125,"children":126},"li",{},[127],{"type":59,"value":128},"only one or two people know what to do when an error message appears;",{"type":54,"tag":124,"props":130,"children":131},{},[132],{"type":59,"value":133},"the computer the application runs on cannot be updated, because the last time\nsomeone tried, the application stopped opening;",{"type":54,"tag":124,"props":135,"children":136},{},[137],{"type":59,"value":138},"a new field or a different report takes weeks, or simply cannot be done;",{"type":54,"tag":124,"props":140,"children":141},{},[142],{"type":59,"value":143},"nobody knows where the source code is, or they do, but nobody left can still\nchange it and compile it again;",{"type":54,"tag":124,"props":145,"children":146},{},[147],{"type":59,"value":148},"someone has already tried to connect the system to the online shop, the bank\nor the invoicing software, and the answer was \"it can't be done\".",{"type":54,"tag":81,"props":150,"children":152},{"id":151},"the-cost-of-doing-nothing",[153],{"type":59,"value":154},"The cost of doing nothing",{"type":54,"tag":55,"props":156,"children":157},{},[158],{"type":59,"value":159},"The first cost is dependence on people. A system that only one person\nunderstands has a single point of failure that goes on holiday, falls ill and,\none day, retires.",{"type":54,"tag":55,"props":161,"children":162},{},[163],{"type":59,"value":164},"The second is the platform. Windows 10 reached end of support on 14 October\n2025 and, for businesses, it only keeps receiving security updates through\nMicrosoft's Extended Security Updates programme, paid per device and capped at\nthree years. Office 2016 and Office 2019, including the Access versions that\ncame with them, reached end of support on the same date. The programs still\nopen, but they no longer receive security fixes. And many old applications do\nnot run well on recent versions, which leads companies to keep an out-of-date\ncomputer connected to the network on purpose, because it is the only one where\nthe program still opens.",{"type":54,"tag":55,"props":166,"children":167},{},[168],{"type":59,"value":169},"The third is security. It is common to find the database in a shared folder\nwith full access for everyone, passwords stored as plain text in a table, and no\nrecord of who changed what.",{"type":54,"tag":55,"props":171,"children":172},{},[173],{"type":59,"value":174},"The fourth, and the one that weighs most day to day, is the inability to\nintegrate. A large customer who wants to send orders electronically, a portal\nfor the sales team, a process that could be automated: every new requirement\nbecomes a patch or a \"no\". And the worst moment to decide all of this is during\na breakdown, with the operation at a standstill.",{"type":54,"tag":81,"props":176,"children":178},{"id":177},"three-common-ways-it-goes-wrong",[179],{"type":59,"value":180},"Three common ways it goes wrong",{"type":54,"tag":55,"props":182,"children":183},{},[184,190],{"type":54,"tag":185,"props":186,"children":187},"strong",{},[188],{"type":59,"value":189},"The big-bang replacement.",{"type":59,"value":191}," Months of building in isolation, everything\nmigrated over a weekend and, on Monday, the numbers do not add up and functions\nnobody had mentioned are missing. It is common for the company to go back to the\nold system \"just for a few days\", which then become permanent.",{"type":54,"tag":55,"props":193,"children":194},{},[195,200],{"type":54,"tag":185,"props":196,"children":197},{},[198],{"type":59,"value":199},"Copying the old system screen by screen.",{"type":59,"value":201}," It looks like it removes the risk\nof forgetting something, but fifteen years of use leave shortcuts and\nworkarounds behind: the \"Notes2\" field that ended up holding the carrier\nreference, the button nobody presses, the report that exists because a customer\nasked for it in 2012. Reproducing the screens means inheriting the bad habits.\nYou replicate the process, not the interface.",{"type":54,"tag":55,"props":203,"children":204},{},[205,210],{"type":54,"tag":185,"props":206,"children":207},{},[208],{"type":59,"value":209},"Migrating the data and forgetting the rules.",{"type":59,"value":211}," All the data comes across, but\nthe rule that gave a 3% discount to a certain group of customers above a given\nvolume, or the one that blocked shipments to customers with invoices more than\nsixty days overdue, lived in the code. Nobody knew it was there, and it is\ndiscovered when the first invoices go out wrong.",{"type":54,"tag":81,"props":213,"children":215},{"id":214},"how-a-module-by-module-replacement-works",[216],{"type":59,"value":217},"How a module-by-module replacement works",{"type":54,"tag":55,"props":219,"children":220},{},[221,223,229],{"type":59,"value":222},"The pattern we use has a curious name in engineering, ",{"type":54,"tag":224,"props":225,"children":226},"em",{},[227],{"type":59,"value":228},"strangler",{"type":59,"value":230},", inspired by\nstrangler figs, which grow around a tree until they replace it entirely. In\nplain terms, it works like this.",{"type":54,"tag":55,"props":232,"children":233},{},[234],{"type":59,"value":235},"A new layer is built next to the old system, connected to the same information.\nThe first module is usually something on the edges, that hurts and is not too\ntangled up with everything else: order and stock lookups for the sales team, a\nportal where customers follow their orders, the pricing calculation, or the\nproduction planning that today lives in a separate spreadsheet. That module\nreads data from the old system, later becomes the one that creates it and, when\nthat happens, the equivalent part of the old system is frozen. You repeat this\narea by area, and the old system keeps shrinking until it has nothing left to\ndo.",{"type":54,"tag":55,"props":237,"children":238},{},[239],{"type":59,"value":240},"There is one technical detail that decides whether this goes well or badly:\nevery type of information must have, at any given moment, a single owner. If\ncustomers start being created in the new system, they can no longer be created\nin the old one, and synchronisation runs in one direction only. Two systems\nwriting to the same record is the fastest route to data nobody can explain.\nDuring the transition, an integration layer keeps the two aligned, for example\nby copying customers created in the new system back into the old one, because\ninvoicing still lives there.",{"type":54,"tag":55,"props":242,"children":243},{},[244],{"type":59,"value":245},"The order of the modules is not a technical decision, it is a business one. You\nstart with what has the most impact and the fewest dependencies, and leave the\ncore, usually invoicing and stock, until last. Quite often, in fact, the core\nshould not be built to measure at all.",{"type":54,"tag":81,"props":247,"children":249},{"id":248},"the-rules-that-only-exist-in-the-code",[250],{"type":59,"value":251},"The rules that only exist in the code",{"type":54,"tag":55,"props":253,"children":254},{},[255],{"type":59,"value":256},"The real value of an old system is not in its code, it is in the business\nrules that settled into it over the years and that nobody documented. They sit\nin Access queries, VBA modules, Delphi form events and database procedures:\nrounding rules, cascading discounts, customer-specific exceptions, cut-off\ndates.",{"type":54,"tag":55,"props":258,"children":259},{},[260],{"type":59,"value":261},"To extract them we use three sources: the code, the people who use the system\nevery day and know what gets done by hand because the system does it badly, and\na comparison of results, in which a month of real data is run through the new\nrules and compared with what the old system produced. Every difference is\neither a bug in the new system, a forgotten rule or, fairly often, an old error\nthat people have been correcting by hand for years.",{"type":54,"tag":263,"props":264,"children":266},"h3",{"id":265},"where-artificial-intelligence-helps-and-where-it-falls-short",[267],{"type":59,"value":268},"Where artificial intelligence helps, and where it falls short",{"type":54,"tag":55,"props":270,"children":271},{},[272],{"type":59,"value":273},"Reading old code is one of the areas where AI has genuinely changed the work.\nA language model can work through thousands of lines of Visual Basic, VBA,\nDelphi or SQL, explain in plain language what each routine does, identify which\ntables each screen reads and writes, point out code that is no longer called\nfrom anywhere and produce a first catalogue of business rules. Reading that used\nto take weeks can come down to days.",{"type":54,"tag":55,"props":275,"children":276},{},[277],{"type":59,"value":278},"It does, however, have clear limits. It does not know whether a rule written in\n2011 still applies, or whether that customer with special treatment is still a\ncustomer: that is validated with the people who know the operation. It can\nconfidently describe a rule that is not quite what the code does, so every\nextracted rule is confirmed against the code and the data. And it should not\ntranslate the old code line by line, because the result is the same system with\nnew syntax. As for confidentiality, the code and the data are analysed in\nenvironments whose contracts exclude model training.",{"type":54,"tag":81,"props":280,"children":282},{"id":281},"data-migrate-once-rehearse-many-times",[283],{"type":59,"value":284},"Data: migrate once, rehearse many times",{"type":54,"tag":55,"props":286,"children":287},{},[288],{"type":59,"value":289},"The data in a fifteen-year-old system is never clean: duplicate customers,\nmissing tax numbers, item codes reused for different products, dates stored as\ntext. Some of it gets fixed during the migration, some of it needs a decision\nfrom the business, and it pays to know early which is which.",{"type":54,"tag":55,"props":291,"children":292},{},[293],{"type":59,"value":294},"The migration runs as an automated, repeatable process, rehearsed several times\nwith real copies of the data. On the day of the final cut-over, you are\nrepeating something that has already gone well four or five times.",{"type":54,"tag":55,"props":296,"children":297},{},[298],{"type":59,"value":299},"Then comes the parallel run. For two to four weeks, or a full month-end close\nwhen the module handles money, both systems work at the same time and the\nnumbers that matter are compared: the day's invoiced total, end-of-day stock,\ncustomer account balances. The old system is only switched off when the numbers\nmatch, and the rollback plan is defined before starting, not in the middle of a\nproblem.",{"type":54,"tag":81,"props":301,"children":303},{"id":302},"how-we-approach-it",[304],{"type":59,"value":305},"How we approach it",{"type":54,"tag":263,"props":307,"children":309},{"id":308},"_1-diagnosis",[310],{"type":59,"value":311},"1. Diagnosis",{"type":54,"tag":55,"props":313,"children":314},{},[315],{"type":59,"value":316},"A 30-minute conversation, free of charge and with no commitment to proceed, ideally with the system open on screen. We look at the technology, the data, who uses it and what hurts most, and the company is left with a first read of the risks and of the order in which it would make sense to replace things.",{"type":54,"tag":263,"props":318,"children":320},{"id":319},"_2-mapping-the-rules-and-the-data",[321],{"type":59,"value":322},"2. Mapping the rules and the data",{"type":54,"tag":55,"props":324,"children":325},{},[326],{"type":59,"value":327},"AI-assisted code reading, interviews and data analysis. The outcome is a\ncatalogue of rules validated by the company, which remains its own\ndocumentation whatever happens next.",{"type":54,"tag":55,"props":329,"children":330},{},[331,333,339,341,347],{"type":59,"value":332},"More and more companies reach this stage with a prototype of the new module\nbuilt in ChatGPT, Claude, Gemini or tools such as Lovable or Cursor. That\nshortens the discovery work and lowers the price, because the main screens and\nrules are already visible. The prototype does not bring user accounts, migrated\nreal data, a connection to the ERP and the old system, backups or testing,\nwhich is precisely what this article describes. We explain the difference in\nthe article on ",{"type":54,"tag":72,"props":334,"children":336},{"href":335},"/en/blog/ai-prototype-to-production",[337],{"type":59,"value":338},"taking an AI-built prototype to\nproduction",{"type":59,"value":340}," and on the page about ",{"type":54,"tag":72,"props":342,"children":344},{"href":343},"/en/solucoes/aplicacoes-feitas-com-ia-em-producao",[345],{"type":59,"value":346},"AI-built\napps in production",{"type":59,"value":79},{"type":54,"tag":263,"props":349,"children":351},{"id":350},"_3-first-module-in-production",[352],{"type":59,"value":353},"3. First module in production",{"type":54,"tag":55,"props":355,"children":356},{},[357],{"type":59,"value":358},"Build, integration with the old system, rehearsed migration and parallel run,\nwith real use.",{"type":54,"tag":263,"props":360,"children":362},{"id":361},"_4-the-following-modules",[363],{"type":59,"value":364},"4. The following modules",{"type":54,"tag":55,"props":366,"children":367},{},[368],{"type":59,"value":369},"One at a time, with the order reviewed after each delivery, because the first\nmodule always reveals things the diagnosis could not see.",{"type":54,"tag":263,"props":371,"children":373},{"id":372},"_5-switching-off-the-old-system",[374],{"type":59,"value":375},"5. Switching off the old system",{"type":54,"tag":55,"props":377,"children":378},{},[379],{"type":59,"value":380},"The history is archived in a format you can consult without the old\napplication, and the computer nobody dared to switch off is finally switched\noff. The code, the documentation and the system belong to the company.",{"type":54,"tag":81,"props":382,"children":384},{"id":383},"investment-and-timeline-module-by-module",[385],{"type":59,"value":386},"Investment and timeline, module by module",{"type":54,"tag":55,"props":388,"children":389},{},[390],{"type":59,"value":391},"It depends on the module, and the ranges published on our solution pages apply\ndirectly.",{"type":54,"tag":393,"props":394,"children":395},"table",{},[396,420],{"type":54,"tag":397,"props":398,"children":399},"thead",{},[400],{"type":54,"tag":401,"props":402,"children":403},"tr",{},[404,410,415],{"type":54,"tag":405,"props":406,"children":407},"th",{},[408],{"type":59,"value":409},"Type of module",{"type":54,"tag":405,"props":411,"children":412},{},[413],{"type":59,"value":414},"Typical example",{"type":54,"tag":405,"props":416,"children":417},{},[418],{"type":59,"value":419},"Investment",{"type":54,"tag":421,"props":422,"children":423},"tbody",{},[424,443,461,479,497],{"type":54,"tag":401,"props":425,"children":426},{},[427,433,438],{"type":54,"tag":428,"props":429,"children":430},"td",{},[431],{"type":59,"value":432},"One automated process",{"type":54,"tag":428,"props":434,"children":435},{},[436],{"type":59,"value":437},"Replacing the macros that generate purchase orders to suppliers",{"type":54,"tag":428,"props":439,"children":440},{},[441],{"type":59,"value":442},"€7,500 to €15,000",{"type":54,"tag":401,"props":444,"children":445},{},[446,451,456],{"type":54,"tag":428,"props":447,"children":448},{},[449],{"type":59,"value":450},"Several connected processes",{"type":54,"tag":428,"props":452,"children":453},{},[454],{"type":59,"value":455},"Orders, approvals and invoice matching",{"type":54,"tag":428,"props":457,"children":458},{},[459],{"type":59,"value":460},"€15,000 to €35,000",{"type":54,"tag":401,"props":462,"children":463},{},[464,469,474],{"type":54,"tag":428,"props":465,"children":466},{},[467],{"type":59,"value":468},"Single-scope portal",{"type":54,"tag":428,"props":470,"children":471},{},[472],{"type":59,"value":473},"Order and stock lookups for the sales team",{"type":54,"tag":428,"props":475,"children":476},{},[477],{"type":59,"value":478},"€15,000 to €25,000",{"type":54,"tag":401,"props":480,"children":481},{},[482,487,492],{"type":54,"tag":428,"props":483,"children":484},{},[485],{"type":59,"value":486},"Multi-role platform",{"type":54,"tag":428,"props":488,"children":489},{},[490],{"type":59,"value":491},"Customers, sales team and warehouse, each with their own permissions",{"type":54,"tag":428,"props":493,"children":494},{},[495],{"type":59,"value":496},"€25,000 to €45,000",{"type":54,"tag":401,"props":498,"children":499},{},[500,505,510],{"type":54,"tag":428,"props":501,"children":502},{},[503],{"type":59,"value":504},"Core operations platform",{"type":54,"tag":428,"props":506,"children":507},{},[508],{"type":59,"value":509},"The new system becomes where the operation lives, with full migration",{"type":54,"tag":428,"props":511,"children":512},{},[513],{"type":59,"value":514},"from €45,000",{"type":54,"tag":55,"props":516,"children":517},{},[518,520,526,528,534],{"type":59,"value":519},"A first module typically goes into production in 6 to 12 weeks: closer to six\nwhen it is an automated process, closer to twelve when it is a portal. The two\nto four weeks of parallel running follow before the old part is switched off.\nThe full replacement is spread over several months, and that is an\nadvantage: the investment follows the results, and each phase is assessed\nbefore the next one is decided. What makes these timelines vary is covered in\nthe article on ",{"type":54,"tag":72,"props":521,"children":523},{"href":522},"/en/blog/how-long-a-custom-software-project-takes",[524],{"type":59,"value":525},"how long a custom software project\ntakes",{"type":59,"value":527},", and what each proposal\nshould itemise in the article on ",{"type":54,"tag":72,"props":529,"children":531},{"href":530},"/en/blog/custom-software-quote-what-it-should-include",[532],{"type":59,"value":533},"what a custom software quote should\ninclude",{"type":59,"value":79},{"type":54,"tag":55,"props":536,"children":537},{},[538],{"type":59,"value":539},"What moves the figure most is the number of hidden rules, the quality of the\ndata and how you get to it. An Access or SQL Server database can be read without\nmuch difficulty. Old, poorly documented file formats, common in Delphi or\nFoxPro applications, take more work before a single line of the new system is\nwritten.",{"type":54,"tag":55,"props":541,"children":542},{},[543,545,551],{"type":59,"value":544},"When the question is replacing an entire ERP, accounting and invoicing\nincluded, the conversation starts at the diagnosis, and the most frequent answer\nis that this part should not be built to measure. We explain why in the article\non ",{"type":54,"tag":72,"props":546,"children":548},{"href":547},"/en/blog/custom-erp-crm-vs-primavera-phc-sap",[549],{"type":59,"value":550},"a custom ERP versus Primavera, PHC, ARTSOFT and\nSAP",{"type":59,"value":79},{"type":54,"tag":81,"props":553,"children":555},{"id":554},"when-it-is-not-worth-it",[556],{"type":59,"value":557},"When it is not worth it",{"type":54,"tag":55,"props":559,"children":560},{},[561],{"type":59,"value":562},"If the system is stable, has few users, does not need to talk to anything else,\nand the person who maintains it is still with the company and available to\ndocument what they know, the sensible move is a small investment: isolate the\nmachine it runs on, make sure backups exist and have actually been tested, and\nwrite down the main rules. That buys time to decide calmly.",{"type":54,"tag":55,"props":564,"children":565},{},[566],{"type":59,"value":567},"If what the old application does is generic, such as invoicing, accounting or\npayroll, the right replacement is an off-the-shelf product. Invoicing software\nin Portugal has to be certified by the Tax Authority (AT) and meet its own\ntechnical requirements, and certified products already keep up with them.",{"type":54,"tag":55,"props":569,"children":570},{},[571],{"type":59,"value":572},"And if the company is heading into a merger, a sale or a reorganisation in the\ncoming months, it is worth waiting.",{"type":54,"tag":81,"props":574,"children":576},{"id":575},"questions-to-answer-before-moving-forward",[577],{"type":59,"value":578},"Questions to answer before moving forward",{"type":54,"tag":120,"props":580,"children":581},{},[582,587,592,597,602],{"type":54,"tag":124,"props":583,"children":584},{},[585],{"type":59,"value":586},"If the system does not open tomorrow morning, how long can the operation\nmanage without it?",{"type":54,"tag":124,"props":588,"children":589},{},[590],{"type":59,"value":591},"Who are the people who know how it works, and how much of their time can they\ngive to explaining it?",{"type":54,"tag":124,"props":593,"children":594},{},[595],{"type":59,"value":596},"Can anyone open the database outside the application, or is the data only\nreachable through it?",{"type":54,"tag":124,"props":598,"children":599},{},[600],{"type":59,"value":601},"Which parts of the system hurt most today, and which work well and can wait?",{"type":54,"tag":124,"props":603,"children":604},{},[605],{"type":59,"value":606},"Are there external deadlines adding pressure, such as a server move, a\ncustomer requirement, or the end of support for part of the platform?",{"type":54,"tag":55,"props":608,"children":609},{},[610,612,618,620,626,628,634],{"type":59,"value":611},"We build ",{"type":54,"tag":72,"props":613,"children":615},{"href":614},"/en/solucoes/portais-internos",[616],{"type":59,"value":617},"internal portals and platforms",{"type":59,"value":619}," that\ntake over from the old system module by module, and ",{"type":54,"tag":72,"props":621,"children":623},{"href":622},"/en/solucoes/automacao-processos",[624],{"type":59,"value":625},"process\nautomation",{"type":59,"value":627}," for the macros and spreadsheets\nthat hold parts of the operation together today. If you have a system like this\nsupporting your business, you can ",{"type":54,"tag":72,"props":629,"children":631},{"href":630},"/en/contacto",[632],{"type":59,"value":633},"request a free diagnosis",{"type":59,"value":635},". We\nlook at what exists, without commitment, and return a proposal with scope,\ntimeline and investment defined, including the order in which to replace each\npart. We reply to contact requests within 24 business hours.",{"title":637,"searchDepth":638,"depth":638,"links":639},"",3,[640,642,643,644,645,646,647,650,651,658,659,660],{"id":83,"depth":641,"text":86},2,{"id":94,"depth":641,"text":97},{"id":110,"depth":641,"text":113},{"id":151,"depth":641,"text":154},{"id":177,"depth":641,"text":180},{"id":214,"depth":641,"text":217},{"id":248,"depth":641,"text":251,"children":648},[649],{"id":265,"depth":638,"text":268},{"id":281,"depth":641,"text":284},{"id":302,"depth":641,"text":305,"children":652},[653,654,655,656,657],{"id":308,"depth":638,"text":311},{"id":319,"depth":638,"text":322},{"id":350,"depth":638,"text":353},{"id":361,"depth":638,"text":364},{"id":372,"depth":638,"text":375},{"id":383,"depth":641,"text":386},{"id":554,"depth":641,"text":557},{"id":575,"depth":641,"text":578},"markdown","content:en:blog:modernise-legacy-software-without-stopping-operations.md","content","en/blog/modernise-legacy-software-without-stopping-operations.md","en/blog/modernise-legacy-software-without-stopping-operations","md",[668,674,683,692,700,709,717,724,731,739,746,753,761,768,775,783,789,795,802,809,816,823,829,837,843,850,857,864,872,880,887,894,900,907,914,921,927,935,942,949,956,963,970,978],{"_path":669,"title":670,"description":671,"date":13,"image":672,"tags":673},"/blog/custom-software-quote-what-it-should-include","What a Custom Software Quote Should Include: A Line-by-Line Example","The line items a custom software quote should break down, a line-by-line example, the costs left out and the warning signs to check before signing.","/images/blog/orcamento-software-medida.jpg",[21,19],{"_path":675,"title":676,"description":677,"date":678,"image":679,"tags":680},"/blog/real-estate-crm-software-portugal-how-to-choose","Real Estate CRM Software in Portugal: How to Choose the Right One for Your Agency","Portals, listings, viewings, commissions and IMPIC obligations: what a real estate CRM has to handle in Portugal and when a custom-built one pays off.","2026-11-09","/images/blog/crm-imobiliario-portugal.jpg",[681,682,19],"Real Estate","CRM",{"_path":684,"title":685,"description":686,"date":687,"image":688,"tags":689},"/blog/is-your-company-data-ready-for-ai","Is Your Company Data Ready for AI? How to Tell Before You Invest","What each type of AI project asks of your data, an eight-question self-assessment, and why you do not need a data lake before your first AI project.","2026-10-29","/images/blog/dados-prontos-ia.jpg",[690,691,21,19],"Artificial Intelligence","Business Intelligence",{"_path":693,"title":694,"description":695,"date":696,"image":697,"tags":698},"/blog/ai-cash-flow-treasury-forecasting","Cash Flow Forecasting: Stop Running Treasury on Bank Statements and a Friday Spreadsheet","Consolidated multi-bank position, automatic reconciliation and a 13-week cash flow forecast. Where AI genuinely helps and where simple statistics are enough.","2026-10-24","/images/blog/previsao-tesouraria.jpg",[691,690,699,21],"Automation",{"_path":701,"title":702,"description":703,"date":704,"image":705,"tags":706},"/blog/ai-clinical-documentation-consultations","AI for Clinical Documentation: Fewer Hours Writing, Without Losing Control of the Note","How AI transcribes and summarises consultations, drafts letters and writes into clinical software, with the clinician signing off. GDPR, MDR and costs.","2026-10-19","/images/blog/ia-documentacao-clinica.jpg",[707,690,708],"Healthcare","Compliance",{"_path":710,"title":711,"description":712,"date":713,"image":714,"tags":715},"/blog/fleet-rent-a-car-management-software-ai","Custom Rent-a-Car Software: Real Fleet Status, AI Inspections and Dynamic Pricing","Real availability, inspection photos compared by AI, fines passed to the renter on time and occupancy-based pricing: what a rent-a-car operation needs.","2026-10-14","/images/blog/frotas-rent-a-car.jpg",[716,19,690],"Logistics",{"_path":718,"title":719,"description":720,"date":721,"image":722,"tags":723},"/blog/ai-recruitment-hr-ai-act-high-risk","AI in Recruitment and HR: What to Automate and What the AI Act Treats as High Risk","What AI can safely do in HR, what the AI Act classifies as high risk in recruitment, and how to design systems that support decisions without making them.","2026-10-08","/images/blog/ia-recrutamento-rh.jpg",[690,708,699,19],{"_path":725,"title":726,"description":727,"date":728,"image":729,"tags":730},"/blog/field-service-management-software-technical-teams","Software for Field Technical Teams: From the Call to the Invoice Without Paper","Work orders, an offline app, parts in the van, contracts with SLAs and an invoice at close-out: what a system for field technicians really has to solve.","2026-10-03","/images/blog/equipas-tecnicas-terreno.jpg",[19,699,690],{"_path":732,"title":733,"description":734,"date":735,"image":736,"tags":737},"/blog/custom-erp-wholesale-distribution","Custom ERP for Wholesalers and Distributors: Where the Margin Goes","Customer pricing, volume rebates, WhatsApp orders and credit limits: where an off-the-shelf ERP fails a wholesaler, where AI helps and what custom costs.","2026-09-26","/images/blog/erp-distribuicao-grossista.jpg",[716,20,19,738],"B2B Sales",{"_path":740,"title":741,"description":742,"date":743,"image":744,"tags":745},"/blog/ai-document-processing-invoices-orders","Invoices, Purchase Orders and Delivery Notes in PDF: How AI Reads Them and Posts Them to the ERP Without Silent Errors","How AI reads supplier invoices, purchase orders and delivery notes from email, checks them against the ERP and leaves only exceptions to your team.","2026-09-19","/images/blog/ia-processamento-documentos.jpg",[699,690,20,21],{"_path":747,"title":748,"description":749,"date":750,"image":751,"tags":752},"/blog/ai-prototype-to-production","Your Team Built an AI Prototype. What It Takes to Get to Production","More and more teams build applications with ChatGPT, Codex or Claude Code. What changes when that software has to be secure, reliable and able to scale to production.","2026-09-05","/images/blog/ai-prototype-to-production.jpg",[19,690,708,21],{"_path":754,"title":755,"description":756,"date":757,"image":758,"tags":759},"/blog/integrate-ai-business-processes-digital-brain","How to Integrate AI into Business Processes Without Adding Another Isolated Tool","Learn how a Digital Brain connects documents, ERP, CRM and email to turn AI into real work, with security, control and measurable return.","2026-08-26","/images/blog/cerebro-digital.jpg",[690,760,699,21],"AI Agents",{"_path":762,"title":763,"description":764,"date":765,"image":766,"tags":767},"/blog/how-long-a-custom-software-project-takes","How Long a Custom Software or AI Project Actually Takes","Real timelines by project type, what happens inside each phase, and the four things on the client side that delay projects more than any technical decision.","2026-08-22","/images/blog/prazos-projeto-software-medida.jpg",[21,19,690,699],{"_path":769,"title":770,"description":771,"date":772,"image":773,"tags":774},"/blog/add-ai-to-existing-business-software","Adding AI to the Software Your Company Already Uses, Without Replacing It","How AI connects to the ERP, the CRM and the files you already have, what changes when a system has no ready-made connection, and what each scenario actually costs.","2026-08-16","/images/blog/integrar-ia-software-existente.jpg",[690,19,20,21],{"_path":776,"title":777,"description":778,"date":779,"image":780,"tags":781},"/blog/how-to-choose-an-ai-agent-partner","How to Choose Who Builds Your Company AI Agents","Seven criteria to separate those who deliver from those who give a good demo: code ownership, fixed scope, what happens when the AI is wrong, and where the data lives.","2026-08-09","/images/blog/agentes-ia-empresariais-suporte-b2b.jpg",[760,21,782],"B2B Portals",{"_path":784,"title":785,"description":786,"date":787,"image":780,"tags":788},"/blog/gdpr-ai-act-before-ai-agents-production","GDPR and the AI Act: What to Check Before Putting an AI Agent in Production","What the GDPR and the AI Act actually require from a company using AI agents, the five points that cover most cases, and the mistake that costs the most.","2026-08-02",[708,760],{"_path":790,"title":791,"description":792,"date":793,"image":758,"tags":794},"/blog/how-much-ai-costs-company-portugal","How Much Does It Cost to Implement AI in a Company in Portugal in 2026","Real price ranges for AI agents, internal platforms and custom software in Portugal, what drives the figure up, and the running cost that never appears in proposals.","2026-07-26",[21,690,760],{"_path":796,"title":797,"description":798,"date":799,"image":800,"tags":801},"/blog/custom-erp-crm-vs-primavera-phc-sap","Custom ERP and CRM or Primavera, PHC, ARTSOFT and SAP: How to Decide","Primavera, PHC, ARTSOFT and SAP fit most companies. The three signs the product stopped fitting, and why replacing everything rarely pays off.","2026-07-19","/images/blog/agribusiness-erp.jpg",[20,682,21],{"_path":803,"title":804,"description":805,"date":806,"image":807,"tags":808},"/blog/custom-ai-agents-vs-generic-tools","Custom AI Agents or Generic Tools: When Building Is Worth It","ChatGPT and Copilot solve individual productivity. When the process needs company data and has to act in your systems, the maths changes. Criteria for deciding.","2026-07-12","/images/blog/automacao-vendas-ia.jpg",[760,690,21],{"_path":810,"title":811,"description":812,"date":813,"image":814,"tags":815},"/blog/custom-real-estate-crm-high-ticket-deals","Custom Real Estate CRM: The Key to Closing High-Ticket Deals","Discover why generic CRMs fail in the luxury market and how a custom-built real estate CRM with AI integration accelerates closing high-ticket deals.","2026-06-08","/images/blog/crm-real-estate.jpg",[682,681,690],{"_path":817,"title":818,"description":819,"date":820,"image":821,"tags":822},"/blog/legal-erp-integrated-crm-lead-capture","From Followers to Clients: How a Legal ERP with Integrated CRM Transforms Lead Capture","What changes when client acquisition and case management live in the same system, and why most of the enquiries generated on social channels are lost before they ever reach a fee proposal.","2026-05-21","/images/blog/erp-juridico-crm.jpg",[19,682,699],{"_path":824,"title":825,"description":826,"date":827,"image":807,"tags":828},"/blog/ai-sales-automation","How AI Automation Shortens Sales Cycles and Boosts Conversion Rates","Discover how AI sales automation eliminates manual administrative work, accelerates high-value B2B deals, and transforms your CRM.","2026-05-14",[690,699,738],{"_path":830,"title":831,"description":832,"date":833,"image":834,"tags":835},"/blog/e-commerce-checkout-optimization","Why Your Online Store is Losing Sales at Checkout (and How to Fix It)","Discover why an outdated e-commerce platform turns customers away at checkout and how modern payment integrations immediately increase your conversion rate.","2026-05-12","/images/blog/otimizacao-checkout-e-commerce.jpg",[836,19],"Retail & E-commerce",{"_path":838,"title":839,"description":840,"date":841,"image":758,"tags":842},"/blog/digital-brain-institutional-memory-smes","What if Your Company Had a Digital Brain? The Revolution of Institutional Memory in SMEs","Discover how a Digital Brain powered by Private AI can centralize company knowledge, eliminate the Bus Factor, and scale your operations securely.","2026-05-08",[690,699],{"_path":844,"title":845,"description":846,"date":847,"image":848,"tags":849},"/blog/ai-chatbot-qualifies-leads-24h","Multiply Your Sales: How an AI Chatbot Qualifies Leads 24 Hours a Day","Discover how a custom Artificial Intelligence chatbot can interact, qualify high-value potential clients, and schedule meetings while your team sleeps.","2026-05-02","/images/blog/chatbot-ia-qualifica-leads.jpg",[690,738,699],{"_path":851,"title":852,"description":853,"date":854,"image":855,"tags":856},"/blog/custom-wms-ai-inventory-management","Zero-Touch Inventory Management: How Custom WMS & AI Reduce Stockouts","Discover how a custom Warehouse Management System (WMS) powered by AI reduces stockouts and automates replenishments in retail and distribution operations.","2026-04-24","/images/blog/wms-medida-ia-gestao-inventario.jpg",[836,690,716],{"_path":858,"title":859,"description":860,"date":861,"image":862,"tags":863},"/blog/custom-erp-consulting-firms-project-management","Ending Consultancy Chaos: 10 SaaS Tools vs 1 Custom ERP","Discover why dozens of SaaS tools destroy consultancy profit margins and how a custom ERP safely restores holistic financial control.","2026-04-20","/images/blog/finance-automation.jpg",[19,20],{"_path":865,"title":866,"description":867,"date":868,"image":869,"tags":870},"/blog/custom-eqms-manufacturing-quality-control","Paperless Quality Control: The Value of Custom e-QMS in Manufacturing","Discover how a custom e-QMS replaces manual factory floor processes and accelerates audits in manufacturing.","2026-04-17","/images/blog/eqms-sistema-controlo-qualidade-industria.jpg",[871,19,690],"Manufacturing",{"_path":873,"title":874,"description":875,"date":876,"image":877,"tags":878},"/blog/law-firm-management-software-ai","Law Firm Management Software: How AI Solves the Problem of Slow Contract Analysis","Discover how a custom ERP and management software for law firms integrates AI to analyze contracts and scale billable hours.","2026-04-15","/images/blog/software-gestao-advogados-ia.jpg",[690,19,879],"Legal Sector",{"_path":881,"title":882,"description":883,"date":884,"image":885,"tags":886},"/blog/custom-crm-vs-salesforce","What Is a Custom CRM and Why Salesforce Might Be Holding Your Business Back","The signs a generic CRM is no longer enough, what changes with a custom system, and how licence costs compare against ownership over a three to five year horizon.","2026-04-10","/images/blog/crm-medida-vs-salesforce.jpg",[682,738,19,21],{"_path":888,"title":889,"description":890,"date":891,"image":892,"tags":893},"/blog/custom-vendor-portals-procurement","Custom Vendor Portals: The Secret Strategy for a Resilient Supply Chain","Discover how bespoke Vendor Portals guarantee efficiency, rock-solid compliance, and total management control across complex procurement operations.","2026-04-09","/images/blog/portais-fornecedores-medida-procurement.jpg",[782,716],{"_path":895,"title":896,"description":897,"date":898,"image":780,"tags":899},"/blog/enterprise-ai-agents-b2b-support","Enterprise AI Agents: Reimagining Complex B2B Customer Support","How AI Agents integrated into your ERP transform B2B support, resolving complex queries without human intervention and scaling operations.","2026-04-08",[690,699],{"_path":901,"title":902,"description":903,"date":904,"image":905,"tags":906},"/blog/custom-erp-enterprise-groups-holdings","Multi-Company Management Without Chaos: The Strategic Advantage of a Custom ERP","Discover how Enterprise Groups and Holdings are abandoning rigid ERPs in favor of custom software to centralize management and scale profitably.","2026-04-06","/images/blog/erp-medida-grupos-empresariais-holdings.jpg",[19,20],{"_path":908,"title":909,"description":910,"date":911,"image":912,"tags":913},"/blog/traditional-mes-ai-smart-system","How to Transform Your Traditional MES into an AI-Driven Smart System","Passive MES systems bottleneck factory efficiency. Learn how to integrate Artificial Intelligence for predictive maintenance and near zero downtime.","2026-04-01","/images/blog/tradicional-mes-ai-smart-system.jpg",[871,690,19],{"_path":915,"title":916,"description":917,"date":918,"image":919,"tags":920},"/blog/custom-erp-vs-saas-logistics","Custom ERP vs SaaS: What Works Best for Logistics Operations?","Generic SaaS logistics platforms create bottlenecks. Learn why a custom ERP transforms distribution scalability and lowers long-term operational costs.","2026-03-23","/images/blog/erp-logistics.jpg",[716,20,19,21],{"_path":922,"title":923,"description":924,"date":925,"image":862,"tags":926},"/blog/backoffice-financial-automation","Backoffice Automation in Financial Services: Security and Efficiency","Manual approvals and document handling slow responses and create compliance risks. Discover how financial backoffice automation transforms operations.","2026-03-16",[699,708],{"_path":928,"title":929,"description":930,"date":931,"image":932,"tags":933},"/blog/end-of-excel-construction","The End of Excel in Construction: Centralizing Project Management","Budgets and planning scattered across spreadsheets cause massive financial overruns. Learn how a custom ERP safely centralizes construction management.","2026-03-09","/images/blog/excel-construction.jpg",[934,20,19],"Construction",{"_path":936,"title":937,"description":938,"date":939,"image":940,"tags":941},"/blog/predictive-maintenance-manufacturing","Predictive Maintenance in Manufacturing: Using AI to Prevent Downtime","Unexpected assembly line failures destroy margins. Discover how predictive maintenance software uses AI to prevent breakdowns before they occur.","2026-03-02","/images/blog/predictive-maintenance.jpg",[871,690],{"_path":943,"title":944,"description":945,"date":946,"image":947,"tags":948},"/blog/ai-crm-real-estate","How AI is Transforming Lead Qualification in Real Estate CRMs","Real estate teams waste hours on unqualified leads. Discover how a custom CRM with AI agents eliminates manual prospecting and boosts conversion.","2026-02-23","/images/blog/ai-real-estate.jpg",[681,682,690,699],{"_path":950,"title":951,"description":952,"date":953,"image":954,"tags":955},"/blog/b2b-custom-extranet-portals","B2B Extranets: Retaining Enterprise Clients with Custom Portals","PDF and email ordering generate B2B friction. Discover how bespoke Extranet Portals streamline corporate sales and secure long-term client relationships.","2026-02-16","/images/blog/b2b-extranet.jpg",[782,871,699],{"_path":957,"title":958,"description":959,"date":960,"image":961,"tags":962},"/blog/custom-bi-dashboards-retail","Custom Business Intelligence Dashboards for Multi-Store Retail","Data silos between e-commerce, retail, and warehouses destroy margins. Learn how custom BI Dashboards centralize operations and drive decisions.","2026-02-09","/images/blog/retail-dashboard.jpg",[836,691,19],{"_path":964,"title":965,"description":966,"date":967,"image":800,"tags":968},"/blog/agribusiness-custom-erp","Scaling Agribusiness: Why You Should Avoid Generic Management Software","Agricultural seasonality and traceability collide with traditional ERPs. Discover how custom software fully digitalizes agribusiness operations.","2026-02-02",[969,20,19,871],"Agribusiness",{"_path":971,"title":972,"description":973,"date":974,"image":975,"tags":976},"/blog/staff-management-hospitality","Staff Management in Hospitality: Ending Roster Disorganization","Rosters in Excel and WhatsApp groups cost you shift coverage, maintenance traceability and GDPR compliance. What changes with a custom internal portal.","2026-01-26","/images/blog/hospitality-staff.jpg",[977,782,699],"Hospitality",{"_path":979,"title":980,"description":981,"date":982,"image":983,"tags":984},"/blog/ai-clinical-scheduling","Clinical Scheduling Automation: Reducing No-Shows with AI Agents","Uncommunicated patient no-shows destroy daily clinic profitability. Learn how custom clinic scheduling software powered by AI actively eliminates friction.","2026-01-19","/images/blog/ai-clinic.jpg",[707,690,699],1794655867804]