Sao Khuê 2025Ranked #1 software developer in Vietnam on Clutch - 4.9/5 from 50+ verified reviews.See the proof

Software maintenance services for software that is already live

Software maintenance is the work that starts after launch. Fixing defects. Patching dependencies. Keeping the product running as the platforms underneath it change. InApps runs it as a standing engineering team, with named engineers and a response clock on every severity. You get the same faces every month, not a ticket queue.

750+projects delivered
10+years shipping software
4.9/5Clutch, 50+ reviews
15+countries served
Two InApps engineers at a desk in the Ho Chi Minh City office, one leaning in while the other gestures at what is on the monitor

Trusted by engineering teams across 15+ countries - from startups to Fortune 500.

KFC Jollibee Prudential Techcombank Lotte MM Mega Market Fahasa ADM WorkPac Future Processing HVS Annam Pegas Baiond Fram Simban TS SG
Common challenges

Six things we hear on the first call

Different products, same six problems. All six come from the same place. Maintenance was nobody's job.

01

The team that built it has moved on. Nobody left can say why the code does what it does.

02

Bugs get picked up by whoever is least busy. Nothing has an owner and nothing has a clock.

03

Dependencies are years behind. Every upgrade is now a project, because none of them happened.

04

Roadmap work stops whenever production breaks. Your best engineers are on the pager instead.

05

A vendor built it and left. Support is an email address and a two-week wait.

06

You are billed per incident, so a bad month costs more and no quarter can be forecast.

Service overview

Software support and maintenance, and where the line sits

Shipped it, and now nobody owns it?

A standing team with a clock on it

Maintenance is everything that keeps working software working. Defect fixes. Security patches. Dependency and framework upgrades. Small changes as the business moves.

Support is the other half of it. Support answers the question. Maintenance changes the code. Most vendors sell one and invoice for both. We staff them as one team, so the engineer who takes the ticket is the engineer who writes the fix.

Some buyers call the whole thing software maintenance support, some call it application support. The label matters less than what the contract says about who fixes what, and how fast.

Named engineers, and you meet them at handover
A response clock per severity, agreed before we start
Your repository, your pipeline, your board
WHAT COMES IN Monitoring Your team Your users Triage by severity FIX PATCH UPGRADE IMPROVE Your normal release

In scope every month

Whether or not anything broke.

  • Defect fixes on anything already in production
  • Security patching and CVE response
  • Dependency, framework and runtime upgrades
  • Small changes, from an agreed monthly block of hours
  • Monitoring, alerting and on-call cover
  • A written cause on every P1

Not in scope, and we say so at scoping

Each of these is a different engagement.

  • A new product. That is custom software development
  • A rewrite. Run a code audit first, then decide
  • Engineers inside your own sprints. That is staff augmentation
  • Building a test suite from zero. That is QA and test automation
  • An infrastructure migration. That is a project with a plan, not a retainer

Each of those five has its own page, and the fit section says which one to read.

The four types

The four types of software maintenance

The standard splits it four ways, and the split matters when you buy. A retainer that only covers the first one will not hold past a quarter.

Corrective

Fixing what is broken. Defects found by your users, by monitoring, or by us. This is the part everyone budgets for, and it is rarely the biggest part.

Adaptive

Keeping up with the world outside your codebase. OS and browser releases, API deprecations, a payment provider changing its terms, a library going end of life.

Perfective

Small improvements to things that already work. A slow query. A screen that confuses people. A report nobody can export. Never a project, always noticed.

Preventive

Work that stops the next incident. Dependency upgrades before the CVE lands, dead code removed, tests written around the parts that keep breaking.

Most of a maintenance budget goes on the last three. Corrective work is the visible part, so it is the part that gets priced. The other three are what decide whether you are still shipping features in two years.
What's included

Four workstreams, one monthly fee

All four run every month. Three of them run whether or not anything broke, which is the whole difference between a retainer and a break-fix contract.

Priced against scope, not against ticket volume. A bad month does not cost you more. Reviewed quarterly and changeable with 30 days' notice, up or down.
What moves the number
01

Incident response and defect fixing

On-call cover to the hours you need. Every incident triaged against the severity table below, reproduced before a line is written, fixed, tested and released. A written cause on anything that reaches P1.

02

Security and dependency upkeep

CVE monitoring across every dependency you ship. Patches batched into a scheduled release rather than merged the moment an alert fires. Framework and runtime upgrades planned before end of life, not after it.

03

Monitoring and reliability

Alerting on the things that should actually wake a human. Error rates, slow queries, failed jobs, queue depth. If your observability is thin, month one is spent putting the basics in rather than guessing.

04

Small change delivery

A fixed block of engineering hours each month for changes too small to be a project. Unused hours do not roll over, and we tell you when they are going unused rather than quietly billing for them.

Engagement models

Three ways to buy it

All three run from Ho Chi Minh City. Offshore software maintenance is where the economics work, because steady-state work does not need to sit in your building to be done well.

Retained pod

A fixed monthly fee, a named team and a response clock. Two to four engineers is typical. This is the default and it is what most single products need.

Dedicated team

Your own team, full time, reporting into your engineering lead. For estates with several products, or where you need a 24/7 rota. Read the dedicated team page for how that is staffed.

On-demand blocks

A block of hours drawn down as you need it. For products that are stable and rarely change. There is no response clock on this one, so it is wrong for anything revenue-critical.

Outsourcing software maintenance and support services does not mean handing over control. Your repository, your pipeline, your board, our engineers. We work inside the tools you already run and we document as we go, so leaving costs you 30 days and a handover rather than a rebuild.
Response targets

What a severity means, and what happens next

Four tiers, agreed at scoping and written into the contract. The clock starts when the ticket lands, not when we get to it.

The four severity tiers in an InApps maintenance retainer, what each one means, the first response window, and what we commit to after that
SeverityWhat it meansFirst responseWhat we commit to
P1 CriticalProduction is down, or data is at riskWithin 1 hour, around the clockContinuous work until a workaround is live, then a written cause
P2 HighA core function is broken for many usersWithin 4 business hoursFix or workaround inside the same business day
P3 MediumSomething is wrong and there is a way round itWithin 1 business dayScheduled into the next release, with a date
P4 LowCosmetic, or a small change requestWithin 2 business daysTaken from the monthly change block, in the order you rank it

You set the severity when you raise the ticket. If we disagree we say so on the ticket and it stays at your level until the two of us agree otherwise.

Why InApps

Keep it in-house, go back to the vendor, or retain us

A maintenance retainer with InApps compared with keeping maintenance in-house and with going back to the vendor that originally built the software
CriterionInAppsIn-houseOriginal vendor
Who does the workA named team, the same engineers each monthWhoever is free that dayWhoever is on the account this quarter
Response clockPer severity, in the contractBest effortBusiness hours, if your tier covers it
Effect on the roadmapNone. Maintenance is a separate teamFirst thing to slip when production breaksNone, but you cannot direct it either
Security patchingScheduled monthly, not on alertWhen somebody remembersOnly what they shipped
Cost shapeFixed monthly fee against agreed scopeSenior salaries, taken off the roadmapPer incident, or a percentage of licence
Where the knowledge sitsDocumented as we go, and it is yoursIn one person's headWith the vendor, by design
Getting out30 days' notice, handover includedNot applicableRenegotiate, or rebuild
Our process

How we take over software we did not write

Four weeks from repository access to holding the pager. Nothing about it is a discovery phase you pay for and never see again.

01
Week 1

Read and inventory

We read the code before we touch it, and we write down what we cannot yet explain.

NDA before any access, read-only first Inventory of services, dependencies and environments A written list of unknowns, not a glossed-over one Severity table drafted against your real incidents
02
Week 2

Shadow a real release

We watch your team ship once, end to end, and write the runbook from what happens rather than from what is documented.

One release observed, deploy to verification Runbook written from the actual steps Monitoring gaps closed, alerts tuned to page a human Backlog triaged into the severity tiers
03
Week 3 to 4

Take the pager

We hold first line with your team on standby behind us. Not the other way round.

On-call rota live to the agreed hours First incidents handled with your lead watching Escalation path named, both directions Standing weekly with your engineering lead
04
Every month after

Run it, and report on it

One report and one call a month. It shows what we missed as well as what we hit.

Incidents by severity, with response times against target Patches applied and CVEs still open Change-block hours used, and by whom What we would fix next, ranked, if you funded it
InApps engineers working together in the Ho Chi Minh City office
The team

Four roles, and you get their names

A maintenance team is not one generalist with a pager. These four are staffed from day one and you meet them at handover, before the rota goes live.

Role 1

Maintenance lead

  • Your single point of contact
  • Severity calls and escalation, both directions
  • The monthly report and the standing call
Role 2

Senior software engineer

  • Defect fixes and small changes
  • Review before every merge, by someone who is not the author
  • The parts of the codebase nobody documented
Role 3

Platform engineer

  • Pipeline, environments and releases
  • Monitoring, alerting and the on-call tooling
  • Dependency and runtime upgrades
Role 4

QA engineer

  • Reproduction before any fix gets written
  • Regression cover around whatever we touched
  • Release verification, on your definition of done
Tooling

We work in your stack, not ours

Maintenance is the wrong moment to introduce new tools. We take over what you already run. We only ask for a change when a gap is causing the incidents.

Monitoring and alerting

Sentry, Datadog, Grafana, Prometheus, PagerDuty. Whatever you have, we take it over as it is. If there is nothing, month one goes on putting the basics in rather than on guessing.

Pipeline and patching

Your CI stays yours, whether that is GitHub Actions, GitLab CI or Jenkins. Snyk and Dependabot drive the CVE and dependency work, batched into a scheduled release rather than merged on alert.

Runtime and data

Docker, Kubernetes and Terraform where they are already in use. PostgreSQL, MySQL and the managed equivalents on AWS, Azure or GCP. We do not migrate anything to suit ourselves.

SentryDatadogGrafanaPrometheusPagerDutyGitHub ActionsGitLab CIJenkinsSnykDependabotDockerKubernetesTerraformPostgreSQL
Cost

What sets the price of a maintenance retainer

There is no rate card, because a 40,000-line Rails app with one integration and a twelve-service estate with a payment provider in it are not the same retainer. Five things set the number. You get it after one call.

The five factors that set the price of a software maintenance retainer, what we ask about each, and why it changes the number
DriverWhat we askWhy it moves the number
Surface areaHow many services, repositories and third-party integrationsMore surface means more that can break, and more to keep patched
Response targetsBusiness hours, extended hours, or a 1-hour clock on P1A round-the-clock clock needs a rota, and a rota needs more than two people
State of the codeTest coverage, documentation, how old the dependencies areCode with no tests costs more to change safely, every single month
Monthly change budgetHow many engineering hours you want for small changesThis is the part you control. Set it low and raise it once you see the demand
ObservabilityWhat monitoring and alerting exists todayIf there is none, month one is instrumentation rather than maintenance

Not sure which state your code is in? A code audit answers that in two weeks, and the issue register feeds straight into the retainer scope so you are not paying us to find the same things twice.

Testimonials

Ask the people who stayed

Every quote below is from a verified review. None of them were written by us.

“They don’t just build what you ask for. They think about the end result, and then go beyond it.”

James Fitzgerald
CTO, computer software company

“They find the right developers fast, and actually listen when you push back. That combination is harder to find than it sounds.”

Arno Nederlof
Lead developer, healthtech company

“Clear expectations, rules that actually hold, delivered on time. And the people are genuinely easy to work with, not just professionally, but as humans.”

Karolina Kwaśniewska
External Resourcing Manager, Future Processing

4.9 / 5 Across 50+ verified reviews on Clutch, where reviewers are interviewed directly and we never see the draft.

Ranked #1 in Vietnam
Clutch verified
Is this a fit?

Worth the call, or worth a no

A retainer is the wrong shape for plenty of good problems. Here is where it works, and where we will point you somewhere else.

This works well if

  • Your software is live, revenue depends on it, and nobody owns keeping it running.
  • The team that built it has moved on, or the vendor has.
  • Your engineers are firefighting instead of building the roadmap.
  • You want a software maintenance company with a response clock, not an email address.
  • You are billed per incident and cannot forecast a quarter.

This is not a fit if

  • You need something new built. That is custom software development, and it is priced as a project.
  • Nobody knows what is in the codebase yet. Start with a code audit, then retain us against the register.
  • You want engineers inside your own sprints, on your own board. That is staff augmentation or a dedicated team.
  • You need a test suite built from nothing. That is QA and test automation, and it is a project before it is maintenance.
  • The product is being sunset inside six months. Pay per incident. It will be cheaper and we will say so.
Common questions

Answered without the hedging

Not sure a retainer is the right shape?

Send the stack and roughly how many incidents you get a month. We will tell you what it would take to run it, including when the answer is that you do not need us.

Book a maintenance call
What are software maintenance services?
Software maintenance services are the ongoing engineering work that keeps software running after it has shipped: fixing defects, patching security vulnerabilities, upgrading dependencies and frameworks, and making small changes as the business moves. It is bought as a retainer with a named team and a response clock per severity, rather than paid for per incident. The four recognised categories are corrective, adaptive, perfective and preventive maintenance.
How much does software maintenance cost?
It is a fixed monthly fee, set by five things: how much surface area there is to keep running, what response targets you need, the state of the code today, how many engineering hours you want reserved for small changes, and how much monitoring already exists. We do not publish a rate card, because a 40,000-line application with one integration and a twelve-service estate with a payment provider in it are not the same retainer. The fee is priced against agreed scope rather than against ticket volume, so a bad month does not cost you more.
What are the four types of software maintenance?
Corrective is fixing what is broken. Adaptive is keeping up with the world outside your codebase: OS and browser releases, API deprecations, a library going end of life. Perfective is small improvements to things that already work, like a slow query or a report nobody can export. Preventive is work that stops the next incident, such as upgrading a dependency before the vulnerability lands. Most of a maintenance budget goes on the last three, even though corrective work is the part that gets priced.
What is the difference between software support and software maintenance?
Support answers the question. Maintenance changes the code. Support is the front door: someone reports a problem, it gets triaged, and the user gets an answer or a workaround. Maintenance is the engineering behind it: reproducing the defect, writing the fix, testing it and releasing it, plus all the patching and upgrading that happens whether or not anyone reported anything. Most vendors sell one and invoice for both. We staff them as one team, so the engineer who takes the ticket is the engineer who writes the fix.
Can you maintain software your team did not build?
Yes, and it is most of what we do. Handover takes four weeks: week one is reading the code and writing an honest inventory including what we cannot yet explain, week two is watching your team ship one real release and writing the runbook from what actually happens, and weeks three and four are us holding first line with your team on standby behind us. We do not need the original developers. We do need read-only repository access and one hour a week from someone who was there.
What response times do you commit to?
Four severity tiers, agreed at scoping and written into the contract. P1 is production down or data at risk: first response within an hour, around the clock, and continuous work until a workaround is live. P2 is a core function broken for many users: four business hours, fix or workaround the same business day. P3 is one business day and goes into the next release. P4 is two business days and comes out of the monthly change block. You set the severity when you raise the ticket, and it stays at your level until we agree otherwise on the ticket.
Is offshore software maintenance a security risk?
It is the same risk as any engineer with repository access, and it is managed the same way. NDA before access. Access provisioned by you and revocable by you, per person. No production data on developer machines: we work from schema and from anonymised fixtures. Named engineers rather than a rotating pool, so you know who holds what. InApps is ISO 27001:2022 certified, and if your own security review needs evidence rather than a badge, we will supply it during scoping instead of after signature.
What happens if we want to leave?
Thirty days' notice, and the handover is part of the contract rather than an extra. You already have everything: the work happens in your repository, on your pipeline, against your board, and the runbook and the documentation are written there as we go rather than held on our side. That is deliberate. A maintenance partner whose value depends on you not being able to leave is not a maintenance partner.
Let's start

Tell us what keeps breaking

The stack, roughly how many incidents a month, and what hours you need covered. We come back with a scope, a severity table and a monthly fee. If a retainer is the wrong shape for it, we will tell you that instead.

4.9 / 5 from 50+ verified reviews on Clutch
NDA before access 30 days' notice, both ways Scope and fee within 48 hours