“Every time we renew the maintenance contract the quote goes up, and the system still goes down anyway.” You hear this a lot at Japanese-owned factories in Thailand. The reason system maintenance cost stops being predictable is not the size of the number. It is that the contract only promises to fix things when they break. What actually hurts a factory is the other case, the one where nothing is broken but something has changed. In this article we break maintenance work into four types and maintenance cost into five layers, then compare a 450,000 THB annual contract against an 810,000 THB annual contract over five years.
Why System Maintenance Cost Is Unpredictable – The Contract Only Promises to Fix What Breaks
When a factory asks us to look at their maintenance spend, the first document we ask for is not the quotation. It is the annex to the contract. In most cases that annex contains only three things. The contact details and opening hours of the help desk. First-line response when a fault occurs. And periodic monitoring plus a check that backups completed. In other words, the contract promises to take the system from a broken state back to its previous state.
Now list, for one full year, the actual reasons someone touched the system at a factory. A customer asks you to change the delivery note to their format. A new product family launches and the item code no longer has enough digits. A second plant opens and the concept of a site code has to exist for the first time. The server operating system reaches end of support. The database version moves up and application compatibility has to be verified. Head office changes its costing policy and the calculation rules change with it.
Not one of those is a fault. The system is running today. It is running, and yet the business cannot run on it as it stands. That is the “fix it when it changes” domain. And most annual maintenance contracts do not include it. The exclusion is written into the contract, but it is compressed into a single line that says “quoted separately,” so at the moment you sign there is no number attached to it.
This is where the cost becomes unreadable. The annual fee column does not carry “fix it when it changes,” so as long as you compare annual fees side by side, the cheaper contract will always look cheaper. What you actually pay, though, is the annual fee plus the accumulated total of everything that got quoted separately, plus the value of the production time lost while you waited for those changes to be delivered. Neither of those two appears in an annual fee table. They appear in the five-year total and in the annual hours of downtime.
So this article does not compare annual fees. It compares five-year totals and downtime hours. On that basis, we trace exactly where a contract that is 44% cheaper per year ends up 9.2% more expensive over five years once lost production is included, and we do it by breaking the money into layers. The cause of the reversal is not a price increase and it is not a lazy vendor. It is that one or two layers were left out at the contract design stage.
Japanese Corporate IT Budgets Still Spend Three Quarters on Keeping the Lights On
This might read as an impression rather than a fact, so let us put numbers underneath it. The Japan Users Association of Information Systems (JUAS) runs an annual survey of corporate IT trends. Its 2026 report was fielded from 5 September to 24 October 2025, targeting 4,500 companies listed on the Tokyo Stock Exchange and companies of comparable standing, and drew responses from 957 companies, an effective response rate of 21.3%. That is a large enough base to describe how listed-company IT budgets actually behave.
In that survey, the split of the IT budget for fiscal 2025 came out at 75.9 for run-the-business (keeping existing systems operating) against 24.1 for value-up (investment that creates new value). Just over three quarters of the budget is consumed keeping what already exists alive.
Narrow it to manufacturing and the numbers get heavier. For the assembly and processing segment of manufacturing, the value-up share in fiscal 2025 was 23.3%, which means run-the-business took 76.7%. Most Japanese-owned factories in Thailand sit in that industry classification. The pattern also tracks with company size. Smaller companies, those with annual revenue under JPY 10 billion, currently sit at 78.2 run-the-business against 21.8 value-up. The smaller the company, the more clearly maintenance eats the budget.
What is interesting is the gap against the targets. The overall three-year target for the value-up share is 32.7%, and even companies with annual revenue under JPY 10 billion set a target of 30.7%. Companies are fully aware that too much is going into keeping the lights on, and they want to push roughly a third of the budget toward new investment. The fact that reality is stuck around the twenty percent mark means that the maintenance side is not shrinking on plan.
In the same survey, the number one reason cited for an increase in the IT budget was renewal, replacement and reinforcement of existing systems and infrastructure. Among the companies whose IT budget is increasing, it was named by 66.3% in their fiscal 2025 plans and 60.3% in their fiscal 2026 forecasts. The leading reason for spending more is not starting something new. It is rebuilding what is already there.
Put those two findings together and there is a practical implication. If 75.9% of the budget goes to maintenance, and if more than six in ten of the companies planning an increase cite renewal of existing infrastructure as the reason, then designing a maintenance contract should carry the same weight as an investment decision. Yet on the ground, maintenance renewal is usually processed as a routine approval that checks only whether the number matches last year. There is no institutional moment at which the layer composition gets reviewed. If your renewal is coming up, look at the change in layers, not the change in the number.
Three Reasons Maintenance Gets Heavier at a Thai Site
Even for a company with an identical structure to its Japanese parent, maintenance weighs differently at a Thai site. There are three reasons, and all three can be checked against data.
The first is that the digital foundation is thinner to begin with. The Japan External Trade Organization (JETRO) surveyed Japanese companies operating overseas between August and September 2025 across 20 countries and regions, with 5,109 valid responses in the Asia and Oceania edition. Among those, the share of companies that reported adopting, using or investing in digital technology was 53.5% overall and 52.1% across ASEAN. Thailand came in at 46.1% from 583 responding companies, six points below the ASEAN average. Thailand is often assumed to be ahead of its neighbours, but on this particular measure of digital adoption among Japanese-owned operations, it is behind.
The second reason is people. In the same survey, the top-ranked obstacle was a shortage of digital talent at 60.7%, followed by high cost of adoption and operation at 56.0%, based on 4,235 valid responses. Below those came insufficient revenue to justify the investment at 26.6%, difficulty integrating with existing infrastructure at 17.0%, and a shortage of suitable external partners at 10.1%. That last figure is the one worth pausing on, because it is the lowest on the list. The problem is less the absence of a partner than the absence of someone in-house to receive what the partner produces. That maps directly onto maintenance cost, because when nobody internally can perform first-line triage, even trivial events get thrown over the wall to the vendor and the first-line layer inflates.
The third reason is distance from the Japanese head office. Thailand is two hours behind Japan. Four in the afternoon in Thailand is six in the evening in Japan, so a fault that surfaces late in the Thai working day can land at a time when the Japanese counterpart has already gone home. On top of that, most Thai public holidays do not coincide with Japanese ones, and some, such as Songkran, run for several consecutive days. A contract with a single line saying “support during business hours” that never states whose calendar those hours follow is a contract that produces an argument on the day the system stops.
There is also a language layer on top of that. The first person to notice something wrong on the shop floor is a Thai operator or supervisor. The report goes to a Japanese plant manager or administration manager, and from there to the information systems department at head office. If the help desk accepts only Thai, or only Japanese, a translation step gets inserted somewhere along that path and the description of the symptom gets thinner as it travels. “There was an error” arrives; the screen and the error code do not. Triage has to start over, and restoration is delayed.
If you are still at the stage of designing your local structure from scratch, it is worth reading how to choose a system development company in Thailand alongside this article, because it sets out selection criteria that already look ahead to the maintenance phase.
Maintenance Work Comes in Four Kinds – Restore, Sustain, Change, Evolve

Now we start breaking things apart. The work that the word “maintenance” points at can be divided into four kinds with genuinely different characteristics. This classification is a practical device for talking about money, and it will not necessarily match the wording in your contract. That is exactly why it is worth re-reading your own contract against these four categories to see how far it actually reaches.
Restore, meaning putting back what broke. Processing stopped with an error, the server is not responding, one particular screen will not open. Handling those events covers root cause isolation, a temporary workaround, and a permanent fix. Most contracts are written primarily around this domain. Note, though, that “up to first-line response” and “through to full restoration” are very different scopes, and we return to that in the section on SLAs.
Sustain, meaning keeping it from breaking. Taking backups and testing that they restore, monitoring disk usage and logs, applying security patches, renewing certificates, reorganising the database. The work is unglamorous and nobody notices when it is done. Conversely, nothing happens for roughly six months when it stops, which makes this the easiest area to cut when budgets tighten. The effect of having cut it surfaces around year three.
Change, meaning rebuilding to match outside requirements. Responding to a change in the law, modifying forms or data interfaces because a customer asked, extending master data and revising access design because a new site opened, upgrading because the operating system or database reached end of support. The system is not broken, but it stops being usable as it is, so someone has to work on it. For factory systems, this is where the effort actually goes in most cases.
Evolve, meaning adding new value. Handheld terminals for production reporting, pulling data off equipment, adding a dashboard, building a new interface to another system. This is unambiguously development work, and whether it belongs in a maintenance contract at all is debatable. What does happen frequently, however, is that a project carved out as “evolve” turns out on inspection to have been “change” all along.
The practical significance of the four categories is that cost predictability differs by category. Restore and sustain are close to fully predictable once system scale and configuration are fixed. Change depends on the external environment, so you cannot predict when it will occur, but across a five-year horizon you can say with confidence that several instances will occur. Evolve arises from management decisions and is therefore completely indeterminate.
Predictable work belongs in the fixed fee. Unpredictable but certain work belongs in a reserved effort allowance. Genuinely indeterminate work belongs in a per-case quotation. That is the principle of layer design. In real contracts, however, only the predictable work makes it into the fixed fee, and the work that is certain to occur falls out into per-case quotation. The next section looks at exactly how it falls out.
What an Annual Maintenance Contract Really Covers Is 1.5 of the Four Kinds
Map the annex of a typical annual maintenance contract signed in Thailand onto the four categories and the picture usually comes out like this. Restore is included, but qualified as “first-line response during weekday business hours,” with the permanent fix sometimes billed at cost. Sustain is partly included. Monitoring and backup verification are in, but patch application and version checking are marked “out of scope” or “quoted separately.” Change is not included. Evolve is obviously not included.
Count that up and you get one category plus half of another. That is what “1.5 of the four kinds” means. The contract says “maintenance,” which reads as though all four are covered, but what is actually promised is restoration plus a portion of sustainment.
None of this implies bad faith on the vendor’s side. Change effort cannot be predicted in advance, so putting it into a fixed fee makes the quote jump. In a competitive situation where annual fees are lined up next to each other, the bidder who priced in unpredictable effort loses, and that is entirely logical. The result is that the market as a whole has optimised toward stripping change out of the annual fee. The way buyers compare has shaped what contracts contain.
So what should a buyer check? At the renewal meeting, put these questions in writing. If the answers do not come back complete, the contract is still a 1.5-category contract.
- How was every piece of work performed in the last twelve months classified across restore, sustain, change and evolve, and can you produce counts and effort figures
- Of those, how many became additional quotations, and what was the total value
- Which sustain items were actually performed and which were not, and why were the missing ones skipped
- Can you list, as far as you know today, the changes expected in the next twelve months
- What are the end-of-support dates for the current operating system, database and middleware, and who is tracking them
The last item in particular does real work. End-of-support dates are among the few changes whose timing is fixed in advance. If the date is known and it has not been budgeted, then nobody is looking after the change layer in that contract.
Keeping the results of that classification on a single sheet gives you strong material for the next renewal negotiation, because it lets you ask a different question. “Last year change work occurred at this volume and this effort, and the additional charges came to this. What would the annual fee be if that volume were converted into a fixed effort allowance?” The goal is to move the discussion from comparing annual fees to comparing layers.
Read Maintenance Cost in Five Layers
The four categories describe what gets done. The next breakdown describes what you are paying for. Split maintenance cost into five layers and contracts become genuinely comparable.
| Layer | Contents | Contract A | Contract B |
|---|---|---|---|
| Layer 1 Licences and subscriptions | Package maintenance fees, client licences | 216,000 | 216,000 |
| Layer 2 Infrastructure | Server, OS, database, backup, network line | 150,000 | 150,000 |
| Layer 3 First-line support | Help desk, triage, restoration work | 84,000 | 240,000 |
| Layer 4 Change handling | Effort allowance for legal changes, new forms, master extension | 0 | 135,000 |
| Layer 5 Knowledge retention | Specification updates, annual inventory, handover documentation | 0 | 69,000 |
| Total | 450,000 | 810,000 |
The unit is THB and the figures are annual. Here is how to read each layer.
Layer 1 is the maintenance fee paid to the vendor when you run a packaged product, plus client-side licences. There is little negotiating room in this layer. Rather than chasing a discount, the reliable move is to inventory unused licences every year and cut them. The model case assumes 20 users, so the check is whether leavers and transfers are still holding seats.
Layer 2 covers the server itself, the operating system, the database, backup media and the network line. On premises that means depreciation and hardware maintenance; in the cloud it means monthly charges. The item most often missed in this layer is the backup restore test. An astonishing number of sites take backups without ever confirming that they can be restored. Taking the backup sits in layer 2, while the restore test falls into layer 3 or layer 5, so it ends up written into no layer’s scope of work at all and nobody performs it.
Layer 3 is running the help desk plus triage and restoration when a fault occurs. The gap between 84,000 for Contract A and 240,000 for Contract B comes from the width of the support window (weekday daytime only versus including out of hours), from whether restoration work is billed at cost or included, and from whether the layer also carries preventive work such as patch application and capacity monitoring. This layer connects directly to service quality, so simply picking the cheaper option comes back as downtime.
Layer 4 is the effort allowance for change work. Contract A carries zero, which means every change triggers a separate quotation. The 135,000 in Contract B buys a block of effort reserved in advance for the year. Whether unused allowance rolls over or expires has to be written into the contract.
Layer 5 is the cost of keeping knowledge alive. Updating specifications, an annual configuration inventory, maintaining handover documentation. The benefit of this layer is the hardest to see, so it is the first to be cut. The consequences of cutting it all arrive at once, either at the moment the responsible person changes or at the moment you try to switch vendors.
Layers 1 and 2 are identical across Contracts A and B. The difference sits entirely in layers 3, 4 and 5, which is to say in the parts where people are involved. A cheap contract is not one where the equipment costs less. It is one where human involvement has been reduced.
Original Model – Comparing a 450,000 THB Contract Against an 810,000 THB Contract Over Five Years
From here we work through a concrete model case. What follows is a model calculation, and real figures will move with implementation scale, business scope and site structure. Look past the numbers themselves at the structure, at which layer creates the gap and where the ranking flips.
The assumptions are as follows. A Japanese-owned assembly and processing plant in Ayutthaya Province, Thailand, with 300 employees. A production management system introduced five years ago, covering everything from order receipt through to shipping, with 20 users. The configuration is one on-premises server and 20 client machines. Initial implementation cost, combining software, hardware and build work, was 4,500,000 THB. And we set lost profit at 22,000 THB for every hour the system is down.
A note on how that downtime figure is set. Here it combines the opportunity cost of shipping stopping with the extra labour created by switching to manual work. In practice you would start from a crude number, monthly shipment value divided by operating hours, then adjust by separating the processes that can fall back to manual from those that cannot. Substitute your own figures as you read.
This plant is comparing two options for its maintenance renewal.
| Option | Contents | Annual fee (THB) | Ratio to initial implementation cost |
|---|---|---|---|
| Contract A | Fault intake and basic monitoring only. Weekday daytime, restoration work billed at cost | 450,000 | 10.0% |
| Contract B | Comprehensive contract including a change effort allowance and knowledge retention | 810,000 | 18.0% |
Contract A is 44% cheaper than Contract B on an annual basis. Expressed against the initial implementation cost, they sit at 10.0% and 18.0%. As a published reference point, System Kanji, a Japanese site that supports buyers of system development work, states in a page updated on 10 October 2025 that maintenance cost excluding outsourced service fees typically runs at about 5% of development cost, rising to about 15% for large systems, with outsourced service fees themselves in the range of JPY 200,000 to JPY 500,000 per month. That is a vendor-side guideline rather than primary statistics, but against it Contract A at 10.0% sits inside the range and Contract B at 18.0% sits slightly above it.
Looking only at the annual fee, choosing Contract A appears rational. The gap is 360,000 THB a year, or 1,800,000 THB over five years. It is also a number large enough to write “44% reduction in maintenance cost” on an approval request.
Five years later, the cumulative contract fees look like this. Contract A: 2,250,000 THB. Contract B: 4,050,000 THB. So far everything is on plan. The problem is the costs that never appeared in that table.
If you want to work back to the structure of the original implementation spend, reading what business system development actually costs first makes it easier to see which parts of the initial cost the maintenance fee is attached to.
What Were the Costs That Fell Outside the Contract
Here is the work that actually occurred over five years and fell outside the contract. Amounts are in THB and are five-year totals.
| Item | Contract A | Contract B |
|---|---|---|
| Form and data interface rework requested by customers (2 cases) | 240,000 and 180,000 | Within contract |
| Upgrade following end of support for OS and database (year 3) | 520,000 | 260,000 |
| Master extension and access design changes for a new site | 160,000 | Within contract |
| Out-of-hours and holiday restoration work (5 occasions, at cost) | 125,000 | Within contract |
| Investigation of current state because specifications were not maintained | 300,000 | Within contract |
| Major functional addition (1 case) | Not treated as within contract | 300,000 |
| Subtotal | 1,525,000 | 560,000 |
Let us go through why each one happened.
Form and data interface rework, two cases. One major customer changed the format of its delivery data and added fields to the EDI interface; a different customer changed the layout of its mandated slip. Neither was driven by our side. Both were required in order to keep doing business, so declining was not realistically an option. Under Contract A they became additional quotations of 240,000 and 180,000. Under Contract B they were absorbed by the layer 4 effort allowance.
Upgrade following end of support for OS and database. This landed in year three. The support deadlines for the server operating system and the database arrived, and the work covered application compatibility verification, functional testing in a validation environment, and cutover to production. Contract A: 520,000. Contract B: 260,000. It does not fall to zero under Contract B because licence costs and the production cutover work exceed the effort allowance. The 260,000 gap exists because under Contract B the layer 5 configuration inventory had kept current-state documentation alive, which compressed the investigation stage.
Master extension and access design changes for a new site. The launch of a second plant required a site code to be added, attributes to be added to the item master, and site-based access permissions to be redesigned. The system was not broken. Without the rework, though, production results at the new site could not be managed. Under Contract A this was an additional 160,000. If you are at the stage of considering horizontal rollout to other overseas sites, what happens when you roll a system out to an overseas plant is useful background.
Out-of-hours and holiday restoration work, five occasions. Contract A covers weekday daytime only, so faults during night shifts and on holidays were billed at cost. Five occasions over five years, totalling 125,000 THB. The number looks small, but the substance of this line is not the money. It is the waiting time before anyone starts working, and that shows up in the downtime figures in the next section.
Investigation of current state because specifications were not maintained. This is the least visible cost in the whole five years. Contract A set layer 5 to zero, so the only specifications that exist date from the implementation five years earlier. The modifications made since were never reflected in them, and the responsible people on both the Japanese and Thai sides have since changed. When a sizeable modification was considered in year four, simply establishing “how does it work today” cost 300,000 THB. That is not money spent building a function. It is money spent remembering.
Major functional addition, one case. The 300,000 under Contract B was an unambiguous evolve project to extend production reporting, and because it exceeded the effort allowance it was billed separately. The Contract A column reads “not treated as within contract” because under Contract A the project was shelved and therefore never became a cost at all. That is not a saving. The improvement simply did not happen. It is a loss that never appears in the table.
Adding contract fees and out-of-contract costs together gives 3,775,000 THB for Contract A and 4,610,000 THB for Contract B. The 1,800,000 THB gap in contract fees over five years has narrowed to 835,000 THB here. Contract A is still cheaper. The reversal is one step further on.
Put a Price on Downtime and the Ranking Flips

The last element is downtime. While the system is down, shipping instructions cannot be issued and production results cannot be entered. Even if you run on paper and a whiteboard, someone has to catch up the entries once service returns.
| Option | Annual downtime | Annual downtime loss (THB) | Five-year downtime loss (THB) |
|---|---|---|---|
| Contract A | 18 hours | 396,000 | 1,980,000 |
| Contract B | 6 hours | 132,000 | 660,000 |
18 hours a year against 6, a difference of 12 hours. Twelve hours a year does not sound like much, but multiplied by 22,000 THB an hour it becomes 264,000 THB a year and 1,320,000 THB over five years.
Three things create that gap. The first is the wait before work starts. Contract A covers weekday daytime only, so an event on Friday evening does not move until Monday morning. The second is triage speed. Because Contract B maintains configuration information through layer 5, the first guess about where to look is a much better guess. The third is prevention, since Contract B includes patch application and capacity monitoring within layer 3, which reduces the number of events that occur at all. Layers 1 and 2 cost the same under both options, so this gap too comes from human involvement rather than from equipment.
Now the five-year totals.
| Option | Five-year total (THB) | Multiple of initial implementation cost |
|---|---|---|
| Contract A | 5,755,000 | 1.28 times |
| Contract B | 5,270,000 | 1.17 times |
The ranking has flipped. The gap is 485,000 THB, and Contract A comes out 9.2% more expensive than Contract B. A contract that was 44% cheaper per year is 9.2% more expensive over five years once lost production is included. That reversal is the centre of this article.
The important point is that the reversal did not happen because Contract A’s vendor did a bad job. Contract A’s vendor delivered exactly what the contract said. The cause of the reversal is that at the contract design stage layer 4 (change handling) and layer 5 (knowledge retention) were pushed outside the fee, and layer 3 (first-line support) was made thin. Because layer 4 was excluded, the 420,000 THB of form and data interface rework and the 160,000 THB of master extension for the new site became separate quotations. Because layer 5 was excluded, the current state became unknowable and establishing it cost 300,000 THB. Because layer 3 was thin, 125,000 THB of out-of-hours work fell to be billed at cost and waiting time accumulated on top of it. The out-of-contract subtotal reached 1,525,000 THB, and slower triage tripled downtime.
One more observation. The multiple against the initial implementation cost is a useful starting point for budgeting, but hold it in two tiers rather than one. What you should actually budget as expenditure is the contract fee plus out-of-contract cost, and that runs from 0.84 times the initial implementation cost for Contract A to 1.02 times for Contract B. The total that also carries lost production reaches 1.17 to 1.28 times, but that portion is opportunity cost rather than money leaving the account, so it belongs in the investment case rather than in the budget sheet. Read the other way, holding the annual fee down to 10.0% of the implementation cost still allows the five-year total to swell to 1.28 times. The percentage you cut from the annual fee is not the percentage you cut from the total.
An SLA Promises Response Time, Not Restoration Time
The most misread element of a maintenance contract is the definition of time inside the SLA. Whether you read it accurately changes your downtime forecast.
Response time is the interval from receiving notification of a fault to sending a first reply. The clock stops the moment a message saying “received, investigation starting” goes out.
Restoration time is the interval until the service is usable again. This is obviously what the factory cares about, and most maintenance contracts do not promise it. The reason is straightforward. You cannot promise a restoration time before you know the cause. A hardware failure might mean days of parts procurement; data corruption might take an unknown number of hours to restore from backup. Declining to write an unkeepable promise into a contract is, from the vendor’s side, correct behaviour.
The problem is that buyers read “response within four hours” as “fixed within four hours.” That phrase almost certainly refers to response time. At renewal, work through these points one at a time.
- Is that figure a response time or a restoration time, and which clause of the contract states it in which words
- Is there a target value for restoration time, even a target rather than a guarantee. If not, can the vendor produce the median and the maximum of past actual results
- How many severity levels are defined for faults, and is each level illustrated with concrete examples of which events belong there
- How does the response time change by severity level
On top of that, at a Thai site you have to nail down the definition of time itself.
- What hours does “business hours” mean, and is that Thai time or Japan time
- Whose national calendar governs public holidays, and how are extended breaks such as Songkran handled
- What is the out-of-hours intake channel. Phone, email or chat. Who answers it
- What is the charging structure for out-of-hours work. Per callout or per hour, and is there a minimum billable duration
- Which languages does the help desk accept, Thai, Japanese or English, and if more than one, which language is available in which time band
Do not treat the language item as minor. The first person to notice a problem on the floor is Thai staff, and whether that person can contact the vendor directly determines how fast the first move happens. If the structure requires going through a Japanese manager, then when that manager is in a meeting the first move stops there. If the design also requires consulting head office information systems across a two-hour time difference, it slows down further.
A contract can state “Japanese language supported” and still leave you with effectively no support in Thailand after four in the afternoon, if what it means is 9 in the morning to 6 in the evening Japan time only. Tightening that single line changes annual downtime.
Issues Specific to Maintenance Contracts in Thailand and ASEAN
Here are the issues that arise when operating in Thailand and simply do not come up in a domestic Japanese contract.
Where electronic invoicing stands. Thailand’s e-Tax Invoice and e-Receipt scheme is voluntary as of 2026. Mandatory B2B electronic invoicing has not been legislated. Incentives do continue, however. Investment in electronic invoicing and electronic withholding tax attracts a 200% deduction, and there is a preferential 1% withholding tax rate. In June 2026 the cabinet approved an extension through the end of 2027, although the royal decree and the ministerial regulation have not yet been issued. Businesses with annual revenue of 30,000,000 THB or less can use a simplified email-based method.
From a maintenance contract standpoint, what matters is not that the scheme is voluntary. It is that there is a route by which you have to comply anyway. If a major customer asks to exchange invoices electronically for its own efficiency, you comply regardless of legal obligation. And that rework is not compliance with a change in the law. It is compliance with a customer requirement. If the contract defines change handling as “rework arising from changes in Thai law and regulation,” this rework falls outside the contract. Whether you widen the definition to “rework arising from changes in law and regulation and from requirements of major customers” is worth several hundred thousand THB.
Language and document versions. Many sites have never decided which language their specifications and manuals are maintained in. Maintain them only in Japanese and Thai staff cannot read them. Maintain them only in Thai and head office cannot. In practice a workable split is Thai and Japanese for screen layouts and operating procedures, English for system architecture and interface specifications. If the contract does not say which documents are maintained in which language, you will argue about it at every renewal.
Staff turnover. We noted above that the top-ranked obstacle in the JETRO survey was a shortage of digital talent at 60.7%. In the Thai labour market, changing employers is normal, and it is not unusual for the system owner to change every two to three years. That happens on the vendor side as well as yours. This is precisely why layer 5 earns its keep. The design assumption is that knowledge attached to a person will be lost, so you pay every year to move it into documents.
Expatriate rotation. Japanese managers rotate every three to five years. The person who signed the contract and the person who decides on renewal are different people. If the reasoning behind the original contract was never handed over, all that survives at the renewal meeting is “it is expensive, take the cheaper one.” We recommend leaving a one-page memo on the design intent of the contract, stating layer by layer why you are paying this amount. That alone changes the quality of the next renewal.
Revisiting the system choice itself. Sometimes the reason maintenance is heavy lies not in the contract but in the architecture of the system. Heavily customised bespoke development requires an impact analysis for every change, which structurally inflates layers 3 and 4. If replacement is on the table, use our comparison of production management systems and selection criteria to re-examine candidates through the lens of how maintainable they are.
The Four-Item Set That Prevents Vendor Lock-In

Being unable to switch vendors is itself a cost. You end up accepting price increases, and if you are unhappy with service quality you have nothing to negotiate with. To preserve the ability to switch, four things belong in the contract.
Design documentation. Screen specifications, form specifications, physical database design and table definitions, interface specifications with other systems, and a list of batch processes with their execution order. The condition is that these reflect the current state, not the state at implementation. Write an obligation into the contract to update them with every modification, and verify annually that there is no drift. This work is layer 5.
Source code or configuration information. For bespoke development, the source code plus the procedure for building and running it. For a package, the customised configuration, the definitions of any added forms, workflow settings, and the permission matrix. Being told “the source code was delivered” is not enough, because it is common to find that the only copy on hand is five years old. Confirm who controls the current version and where it is stored.
Data export format. The ability to output all master and all transaction data in a format readable outside the system, such as CSV or another common format, together with a field definition document for the exported data. The item most often overlooked here is the meaning of coded values. A status field containing “3” is useless without a table saying what 3 means. Judge this not by whether an export function exists, but by whether the exported data can be interpreted without help.
Handover procedure and duration. Write a clause stating what will be handed to the successor vendor or to your own team at contract termination, and over what period and with how much effort. An abstract line saying “we will cooperate at termination” does nothing. Only when you write the list of deliverables, the handover period (for example the 30 days before termination), the effort available in that period, and who bears the cost does the clause become enforceable.
If those four are missing from the contract, nothing remains in your hands when the contract ends. And when nothing remains, the next vendor starts from a current-state investigation. The 300,000 THB investigation cost in the model case is exactly the cost of arriving in that condition.
Here is one practical way to test the four-item set. Once a year, ask yourself, “if the relationship with our vendor ended today, could we hand over to a different vendor within 90 days?” Any element that makes you answer no is the real substance of lock-in. Is the design documentation stale? Are coded values undocumented? Is there an operational routine only one person knows? Identify it specifically and use it as material in the next renewal negotiation.
Where to Draw the Line Between In-House and Outsourced
Outsource everything and layer 3 inflates. Insource everything and the system stops the moment a person leaves. The design question is where to draw the line. The division that works in practice is this: first-line intake and master data operation in-house at the local site, change handling and infrastructure upgrades outsourced.
What belongs in-house locally. First, the intake function. Someone has to receive what comes off the floor and make the opening moves of triage. Concretely, that means determining whether the error is hitting one person or everyone, one screen or every function, what happened immediately before, and whether the problem is network or application. Whether that step exists internally makes an enormous difference to how many events get thrown to the vendor. As noted, layer 3 is the cost of human involvement, so fewer events thrown outward has a direct effect.
Second, master data operation. Items, customers, unit prices, work centres, permissions. Additions and changes here occur daily, and outsourcing them creates a request and a wait for every single one. The principle is to document the registration rules and have internal staff operate them. Changing the structure of the master is a different matter and belongs in change handling. Registering one new item is in-house work; adding one attribute column to the item master is outsourced work.
Third, daily operational checks. Visually confirming that backups completed, checking disk capacity, reviewing the previous day’s error log. The work takes roughly ten minutes a day and Thai staff can perform it given a written procedure.
What belongs outsourced. Change handling and infrastructure upgrades. Program modification, database structure changes, operating system and middleware version upgrades, decisions on applying security patches. These are low-frequency tasks whose failure modes are severe. Low frequency also means that insourcing them never builds fluency. Rather than holding work you do twice a year inside the company, it is faster and safer to leave it to the party who does it daily.
Two conditions make the division work. The first is that the in-house side must never come down to one person. Job changes are common in Thailand, so you need at least two people trained to perform first-line intake. The second is that the boundary of responsibility between in-house and outsourced must be fixed in writing. A line like “master data internal, structural changes external” will always turn ambiguous if it lives only in conversation. Decide in advance who adjudicates when an event arrives that could belong to either side.
Adopt this division and the logic behind Contract B’s layer 3 landing at 240,000 THB becomes visible. When first-line triage happens internally, the information has already been organised by the time it reaches the vendor, which reduces the vendor’s effort. Insourcing does not move cost inside the company. It reduces total effort.
Ten Items to Settle on Paper Before Signing
Before you enter a renewal or a switching negotiation, write out the following ten items. Every one of them fails to work as a verbal understanding.
- State the scope of maintenance against the four categories of restore, sustain, change and evolve. In particular, state whether change is included and, if it is, how many person-days a year it covers, as a number
- State support hours in Thai time, from what hour to what hour, and state whose national calendar governs public holidays
- State explicitly whether the SLA figure is a response time or a restoration time, and obtain in writing either a restoration time target or the median of past actual results
- Divide faults into roughly three severity levels and give at least three concrete example events for each
- State the help desk languages and intake channels by time band. Which of Thai, Japanese and English is available when
- State the charging structure for out-of-hours and holiday work. Per callout or per hour, and whether a minimum billable duration applies
- For the change effort allowance, state whether unused effort carries forward or expires, and what the unit rate is once the allowance is exhausted
- List, as deliverables, the four-item set of design documentation, source code or configuration information, data export format, and handover procedure
- Include the annual configuration inventory and specification update in the contract, specifying when they occur and what they produce
- Write the handover period, handover effort and cost allocation at contract termination as a contractual clause
Count how many of these ten your existing contract actually states. If it is fewer than five, that contract is worth revisiting regardless of the size of the annual fee. The third item (response versus restoration) and the eighth item (the four-item set) carry the largest losses when omitted.
The act of writing them out has value in itself. Trying to fill in ten items always surfaces something your own organisation has never decided. Attempting to define “what counts as a high severity fault” starts an internal argument about whether an event that halts shipping outranks an event that delays the monthly close. Having that argument before signing makes decisions faster on the day a real fault occurs.
Five Common Failure Patterns
Five failures we have actually watched happen at Japanese-owned factories in Thailand.
Deciding on annual fee comparison alone. The most common pattern. Competing quotes are lined up and ranked cheapest first. Because contracts with different layer compositions are being compared on price alone, the contract that dropped layers 4 and 5 always wins. Five years later the same reversal described in this article arrives. The fix is to make bidders quote by layer. Ask for the breakdown from layer 1 to layer 5 and the quotes become comparable.
Nobody is tracking end-of-support dates. End-of-support dates for operating systems and databases are published years in advance. Even so, there is an endless supply of cases where someone notices three months before the deadline and it becomes an emergency. Emergency work carries a higher unit rate, and the compressed schedule leaves no time for verification, which raises cutover risk as well. The fix is to put the end-of-support date for every product in production onto one sheet and refresh it annually. You can also make tracking a contractual obligation on the vendor.
Stopping specification updates. When budgets get cut, documentation is the first candidate. Nothing happens for six months. The problem appears when the responsible person changes and when you try to switch vendors. In the model case, that decision came back in year four as a 300,000 THB current-state investigation. It is closer to reality to assume that some multiple of the amount saved will be invoiced later.
Not placing first-line intake in-house. This is the pattern where events from the floor are forwarded to the vendor untouched. Because no triage has happened, the vendor starts from basic checks, round trips multiply and restoration is delayed. Volume does not fall either, so layer 3 inflates. The fix is the boundary described in the previous section, with at least two people internally capable of first-line triage.
Saying nothing in the contract about how it ends. While the relationship is good, nobody wants to discuss termination. Then five years pass with no termination clause, and when switching is finally considered there is no document on hand that explains what the data means. The result is that switching is abandoned and the contract continues with no negotiating leverage. Because it never appears as a number, this is the least visible failure of all. Write down how it ends on the day you sign.
Frequently Asked Questions
What is the going rate for business system maintenance cost?
There are no primary statistics. As a reference point, System Kanji, a Japanese site supporting buyers of system development work, states in a page updated on 10 October 2025 that maintenance cost excluding outsourced service fees typically runs at about 5% of development cost, rising to about 15% for large systems. For outsourced service fees themselves it cites, as a level within the Japanese domestic market, JPY 200,000 to JPY 500,000 per month. Note that this figure is denominated in Japanese yen, not in THB. That is a vendor-side guideline, not a figure derived from statistical survey. In the model case in this article, against an initial implementation cost of 4,500,000 THB, Contract A sits at 10.0% (450,000 THB) and Contract B at 18.0% (810,000 THB). Rather than comparing percentages, compare how far the coverage reaches across layers 1 to 5.
How often should a maintenance contract be reviewed?
Rather than fixing on a contract term, we recommend separating the review cycles. Check the level of the annual fee every year. Review the layer composition, meaning what is and is not included, every two to three years. And in the year before an infrastructure milestone, meaning the approach of end of support for the operating system or database, review the whole arrangement without exception. Running those three cycles separately reduces the burden of renegotiating everything at every renewal. Also, decision quality drops when a contract renewal coincides with the rotation of the Japanese manager, so shift the timing apart if you can.
I need to reduce the annual fee. Which layer should I cut?
In order of safety, layer 1 (licences) is the best place to start. Inventory unused licences every year and you can reduce them with no impact on operations. Layer 2 comes next, where migration from on premises to cloud or a review of the backup method may create room. If you cut layer 3, do it together with placing first-line intake in-house. Narrowing the support window without reducing event volume comes straight back as downtime. Cutting layers 4 and 5 is not recommended. As the model case shows, the amount saved by removing those two layers returns as out-of-contract cost and lost production.
Is Thai electronic invoicing compliance included in a maintenance contract?
In most cases it is not. Thailand’s e-Tax Invoice and e-Receipt scheme is voluntary as of 2026, and mandatory B2B electronic invoicing has not been legislated. Under a definition of “rework arising from changes in law and regulation,” it therefore falls out of scope. If a customer asks you to exchange documents electronically, however, you have to comply whether or not there is a legal obligation. The dividing line is whether you widened the change-handling definition to “rework arising from changes in law and regulation and from requirements of major customers.” Note also the current incentives, a 200% deduction for investment in electronic invoicing and electronic withholding tax and a preferential 1% withholding tax rate, with the cabinet having approved an extension through the end of 2027 in June 2026 (the royal decree and ministerial regulation have not yet been issued). Businesses with annual revenue of 30,000,000 THB or less can use a simplified email-based method.
If the contract says “response within four hours,” will it be fixed within four hours?
No. That phrase almost certainly refers to response time, meaning the interval from intake to first reply. Few contracts guarantee restoration time, the interval until the service is usable again, because a restoration time cannot be promised before the cause is known. At renewal, confirm from the actual clause whether the figure is response or restoration, and for restoration ask in writing for a target value, which need not be a guarantee, or for the median and maximum of past actual results.
I want to switch vendors. What should I check first?
Start by checking what you actually hold. Do you have design documentation that reflects the current state? Is the source code, or the configuration of your customisations, stored in its latest version? Can you export all data, and do you have both the field definitions and the lookup table for coded values? And does the contract contain a handover clause? With those four in place, switching is realistic. Without them, the next vendor starts from a current-state investigation and you pay for it. It is usually cheaper overall to negotiate those four into place while the current contract is still running, and only then move on to considering a switch.
Can we operate without an information systems specialist on staff?
You do not need a dedicated specialist, but you do need two people who can handle first-line intake and master data operation. What is required is not development knowledge but the ability to isolate an event and describe it accurately. Avoid relying on a single person. Changing employers is common in Thailand, and operations stop the moment that one person leaves. The JETRO survey also puts a shortage of digital talent at the top of the obstacle list at 60.7%, so securing people is not a precondition to be assumed away but a continuing task to be designed into the arrangement.
Summary
Here are the points of this article.
System maintenance cost becomes unpredictable not because the amount is high but because the contract only promises to fix things when they break. What a factory actually needs is to fix things when they change, and the substance of that is changes in the law, customer requirements, master data extension from adding a site, and end of support for the operating system or database. That difference does not appear in the annual fee. It appears in the five-year total and in downtime hours.
Maintenance work splits into four kinds, restore, sustain, change and evolve. What a typical annual maintenance contract really covers is restoration plus part of sustainment, 1.5 of the four kinds. Cost is read in five layers, licences, infrastructure, first-line support, change handling and knowledge retention. The layers where contracts actually differ are 3 through 5, which is to say the parts involving people.
In the model calculation, Contract A at 450,000 THB a year is 44% cheaper than Contract B at 810,000 THB a year, yet on a five-year total of contract fees plus out-of-contract costs plus lost production it comes to 5,755,000 THB against 5,270,000 THB, making Contract A 9.2% more expensive. The cause of the reversal is that Contract A pushed layer 4 (change handling) and layer 5 (knowledge retention) outside the fee and kept layer 3 (first-line support) thin. Excluding layer 4 meant a separate quotation for every change. Excluding layer 5 meant the current state became unknown and investigation cost was incurred. Keeping layer 3 thin meant out-of-hours work was billed at cost, triage slowed and downtime tripled. This is a model calculation, and the amounts will move with configuration and business scope. What we want you to look at is not the money but the structure, which layer you remove and where it comes back.
On reading contracts, always confirm whether the SLA figure is a response time or a restoration time. At a Thai site, put the definition of business hours, whose public holidays govern, the two-hour time difference from the Japanese head office, and whether the help desk operates in Thai, Japanese or English, all into writing. And unless the four-item set of design documentation, source code or configuration information, data export format, and handover procedure and duration is written into the contract, nothing will remain in your hands when it ends.
For the operating structure, the division that works is first-line intake and master data operation in-house at the local site, with change handling and infrastructure upgrades outsourced. Make sure the in-house side always has at least two people.
If your maintenance renewal is approaching, start by mapping the existing contract onto the four categories and the five layers and seeing which cells are blank. If the blanks are in layers 4 and 5, that contract has traded a low annual fee against your five-year total and your downtime.
If you are simply at the point of wanting a second opinion on whether your current contract fits how you actually operate, that is a fine place to start. TOMAS TECH implements and maintains production management and other business systems for Japanese-owned factories in Thailand, and we are happy to help read the layer composition of a contract or organise your support structure on the assumption that you keep your existing vendor. Conversations that begin from wanting to understand the current situation, rather than from switching, are equally welcome. You can reach us through our contact page.
References
- Japan Users Association of Information Systems (JUAS) — Corporate IT Trends Survey Report 2026 (April 2026)
- Japan Users Association of Information Systems (JUAS) — Corporate IT Trends Survey overview page (fiscal 2025 survey)
- Japan External Trade Organization (JETRO) — Survey on Business Conditions of Japanese Companies Operating Overseas, Asia and Oceania edition, fiscal 2025 (fiscal 2025 survey)
- Japan External Trade Organization (JETRO) — Press release materials for the same survey (fiscal 2025 survey)
- VATupdate — Latest developments in e-invoicing in Thailand (July 2026)
- System Kanji — Reference levels for system development maintenance cost (updated October 2025)