13 mins read

Choosing application maintenance services: scope, costs, and service levels

Reliable application maintenance services keep existing software usable, secure, and compatible as its environment changes. The work can include fixing defects, updating dependencies, monitoring failures, and making small changes that preserve business value. It needs a clear scope because “support” can mean very different things to different providers.

A business may expect rapid help when an order system stops, while a provider may offer only scheduled bug fixes. Those expectations should meet before a contract starts.

This article explains maintenance categories, the difference between support and development, and the evidence a provider needs during handover. It also covers service levels, cost drivers, and how to judge whether ongoing support improves the application.

What application maintenance includes

Maintenance follows software through its operating life. Some work responds to a failure. Other work prevents known problems or adapts the system to changes outside the application’s control.

For example, a browser update can affect an older interface. An external API can change its authentication. A library can lose support. The application’s own code may remain unchanged while its operating context shifts.

Therefore, a maintenance plan should cover the application and its important dependencies. It should also state what the provider does not control, such as a third-party platform outage.

Oxen’s software development life cycle guide places support within the product’s longer life. Maintenance works best as planned product work rather than a series of disconnected emergencies.

Four common categories of maintenance

Corrective work

Corrective maintenance fixes behavior that fails to meet agreed requirements. Examples include an incorrect calculation, a broken export, or a workflow that cannot complete under a supported condition.

Reproducing the issue is part of the work. A useful ticket includes the expected result, actual result, affected version, and steps or evidence that help the team investigate.

Adaptive work

Adaptive maintenance keeps the application working when its environment changes. It can include operating-system compatibility, API updates, or a hosting change.

Ask how the provider monitors upcoming changes and communicates required work. Waiting until a dependency stops working can turn a manageable update into an urgent incident.

Preventive work

Preventive maintenance reduces known future risk. Examples include updating vulnerable components, improving test coverage around fragile code, or replacing an unreliable recurring job.

The NIST Secure Software Development Framework provides practices for addressing vulnerabilities across software delivery. A maintenance agreement should explain how the team receives, assesses, and handles security findings.

Small improvements

Some providers include limited improvements, such as a clearer validation message or a small workflow adjustment. Others treat every enhancement as a separate development request.

Neither arrangement is automatically wrong. Define the boundary so staff know whether a request uses the maintenance allowance or needs separate planning.

Maintenance, incident response, and feature development

Incident response aims to restore acceptable service when something goes wrong. Maintenance can include the permanent fix and follow-up work that prevents recurrence.

Feature development adds or changes business capability. A new approval workflow may require design and discovery beyond routine maintenance, even if it touches only a few screens.

Use examples in the agreement. “Fix an export that stopped working” and “build a new export format” provide a clearer boundary than a vague distinction between small and large changes.

Also define temporary workarounds. A provider may restore service by disabling one feature while it investigates the root cause. The business should know how the team tracks the lasting fix afterward.

Start with a technical and operational handover

A new provider needs enough access and context to work safely. Source code alone does not explain the application’s data, deployment, dependencies, and business rules.

Prepare an inventory of repositories, environments, databases, integrations, scheduled jobs, and critical workflows. Include accountable owners and the route for requesting access.

Next, review the build and release process. Can the provider create a working version from the repository? Can it deploy to a safe test environment? Are important configuration values documented without exposing secrets?

Also identify known issues and unsupported components. An honest baseline helps both sides distinguish inherited risk from new defects.

Oxen’s legacy modernization guide explains why older systems need evidence before major changes. The same principle applies to taking over their maintenance.

Define service levels in business terms

A service level should describe the response the business needs for different impacts. A complete outage of a critical order workflow differs from a cosmetic defect on an internal report.

Agree on severity levels with examples. Then state coverage hours, notification routes, response targets, and escalation. Include the time zone so “business hours” means the same thing to both sides.

Separate response time from restoration time and final resolution. A quick acknowledgment does not mean the team has fixed the issue. Likewise, a temporary restoration may precede a permanent correction.

Avoid promises the provider cannot control. If an external system fails, the provider may investigate, coordinate, and apply a fallback, but it cannot guarantee another vendor’s recovery time.

Finally, explain how the business reports urgent issues. An emergency route should reach the agreed responder rather than sit in a normal enhancement queue.

Build a maintenance backlog with priorities

Ongoing work should not depend only on the loudest request. Maintain a backlog that combines defects, dependency updates, recurring incidents, and small improvements.

Rank work by business impact, risk, urgency, and effort. A rarely used report can wait, while a supported dependency approaching retirement may need planned action.

Next, reserve capacity for preventive work. If every period fills with incoming tickets, the application may keep accumulating the causes of those tickets.

Google’s discussion of eliminating toil explains the problem of repetitive operational work that does not create lasting improvement. Use recurring support tasks as a signal for where automation or a permanent fix may help.

Keep the business involved in tradeoffs. The provider can explain technical risk, but the business needs to confirm which workflows matter and which limitations it can tolerate.

Require safe changes and regression checks

A maintenance fix can create a new problem elsewhere. Therefore, the provider needs a repeatable process for review, testing, deployment, and recovery.

Match checks to the change. A calculation fix needs evidence around the affected rule and nearby cases. An integration update needs realistic request, response, and failure tests.

Oxen’s regression testing guide explains how teams can protect existing behavior after changes. Focus on business-critical paths rather than adding tests merely to increase a coverage number.

Also clarify approval and release responsibilities. Who confirms business behavior? Who can deploy? What happens if the release fails? Those questions matter during normal work and become urgent during an incident.

Keep releases traceable to tickets and versions. Support staff should know which change reached which environment and when.

Monitoring and support evidence

Monitoring should reveal failures that matter to users. A running server does not prove that customers can submit an order or staff can produce an invoice.

Define checks for important workflows, failed jobs, integration errors, and resource limits. Then route alerts to someone who can act.

Log enough context for investigation while avoiding unnecessary private data. A useful correlation identifier can connect a user report with a request or background task.

Next, review recurring incidents. If the same job fails weekly and staff rerun it manually, maintenance should address the underlying cause rather than report each rerun as a successful fix.

Also test recovery procedures. Backups, access routes, and runbooks need periodic verification under an agreed plan. A written recovery claim is weaker than evidence from a controlled restore.

What drives the cost of software maintenance services?

Cost depends on the application’s complexity, condition, criticality, and support coverage. A well-documented internal tool differs from a customer-facing platform with several integrations and round-the-clock needs.

Common commercial structures include a monthly allowance, time-based work, a defined service package, or a combination. Compare what each includes rather than comparing the headline fee alone.

Ask how unused capacity, urgent work, and out-of-scope requests affect charges. Also clarify third-party licenses, hosting, monitoring, and specialist support.

A takeover assessment may reveal work needed before reliable ongoing support can begin. Examples include restoring a working build process or adding a safe test environment. Separate that initial work from routine maintenance in the estimate.

Do not use a generic percentage of original development cost as the only budget. The current operating risk and required service level provide a better basis for planning.

Questions to ask a maintenance provider

  • Which application types and integrations can your team support?
  • How will you establish the initial technical baseline?
  • Who owns urgent response and who provides backup coverage?
  • How do you test fixes and record releases?
  • How do you handle security findings and dependency updates?
  • What evidence appears in the monthly service review?
  • How will another provider take over if the agreement ends?

Ask for a sample report with sensitive details removed. It should explain completed work, unresolved risks, recurring issues, and proposed next steps. A count of closed tickets alone says little about application health.

Measure whether maintenance is improving the service

Choose a small set of useful measures. These might include recurring incidents, failed business jobs, age of important defects, and completion of planned updates.

Also review user impact and support effort. Fewer tickets can reflect a better product, but it can also mean users stopped reporting issues. Combine numbers with workflow evidence and feedback.

Track risk reduction explicitly. Replacing an unsupported component may not change a visible screen, yet it can remove a known operating constraint.

Finally, use reviews to adjust scope. If small improvements dominate the workload, a separate product roadmap may make planning clearer. If incidents dominate, investigate the structural causes before adding more response capacity.

Make exit and handover part of the agreement

A maintenance relationship should preserve the business’s ability to change providers. Agree on access ownership, documentation updates, and the materials the team will hand over when the service ends.

At a minimum, the next capable team should understand environments, deployment, integrations, open issues, and recovery procedures. Keep those records current during normal work rather than reconstructing them at the end.

Also define how credentials and permissions change during the transition. Remove the outgoing team’s access through the normal process while ensuring that the new team can operate the application safely.

Finally, review any provider-owned tools or licenses. If the monitoring or build process depends on them, the business needs a clear replacement or transfer plan. This avoids discovering a hidden dependency during an urgent support handover.

A small periodic handover check can expose gaps early. Ask someone outside the main support pair to follow the deployment notes in a safe environment and record any missing steps.

Frequently Asked Questions

Can a provider maintain software it did not build?

Often yes, after assessing access, code, dependencies, and documentation. The provider should state any limits and identify initial work needed for a safe takeover.

Does maintenance include new features?

It depends on the agreement. Define examples, size limits, and the process for separate development so the business can plan requests without surprise charges.

Should every application have 24-hour support?

No. Match coverage to business impact and operating hours. Critical services may justify wider coverage, while a lower-risk internal tool may work with a narrower support window.

Choose a service that preserves business value

Effective application maintenance services combine clear response rules with planned improvement. Establish the baseline, define scope, and require evidence around changes and recurring risks. The aim is software that remains dependable as the business and its environment change.

Plan ongoing care for your business software

Oxen Softwares can help assess an existing application and define a practical plan for fixes, updates, and future improvements.

Talk to our team

Leave a Reply

Your email address will not be published. Required fields are marked *