Custom Software Projects

Software maintenance after launch: scope, ownership and practical checks

Define software maintenance scope, support responsibilities, updates, monitoring and recovery checks to keep your application manageable after launch.

The support tickets in the BiCrmy demo application; all records are fictional

The forms work and users can sign in, yet on Monday morning the sales team stops receiving notifications about new enquiries. Nothing looks wrong on the application screens. Changed credentials at the email provider have left messages waiting in a queue. This is when a software maintenance plan proves its value: someone knows how to detect the problem, investigate it and keep the business moving.

Going live does not end a product’s exposure to change. People join and leave, suppliers revise their services, business rules evolve and underlying software components continue to develop. Treating maintenance as “call us when something breaks” turns predictable work into repeated surprises. A useful plan does not predict every incident. It explains the routine work and establishes a practical response when the unexpected happens.

Four different activities often share one support label

A sales representative who cannot find a report may need guidance. A report that adds figures incorrectly requires defect investigation. A security update to an underlying component is technical maintenance. Adding another reporting dimension is a development request. Calling all four activities support hides important differences in effort, ownership and approval.

The maintenance scope should explain these distinctions through examples. Record which specification defines the existing behaviour, how much user assistance is included and how new features will be assessed. An initial investigation may be needed before a request can be classified. Once the evidence is available, record the decision and its reasoning. Users should describe their experience rather than be expected to diagnose its technical cause.

An apparent small change can affect several parts of a system. Renaming a field might also alter exports, integrations and reports that depend on that field. Phrases such as minor amendments need supporting examples in the agreement. Assess the change through its consequences for behaviour and data, rather than through the size of the visible control.

Ownership needs to work during an incident

The application, hosting, domain name, email delivery and payment connection may have different owners. A failed page could involve more than one of them. List the business owner, technical contact and alternative communication route for each important component. Discovering that a renewal notice went to an abandoned mailbox is an avoidable complication during an outage.

Business accounts should remain under the business’s control. A domain or cloud account tied to one employee’s personal address creates continuity problems when that person leaves. Keep an authorised-user list, payment responsibility and account recovery arrangements in a controlled record. Give maintainers the access they need through appropriate access management, rather than circulating credentials in an unrestricted document.

The ownership record must also identify someone who can make operational decisions. Engineers may propose disabling a feature temporarily to protect the rest of the application. Without an authorised business contact, that decision can remain blocked. Knowing who can accept a temporary limitation is as useful as knowing who can deploy a technical fix.

Response time and resolution time are different commitments

Acknowledging a ticket, beginning an investigation and releasing a permanent correction are separate events. Combining them into a single promised time produces confusion. A team may assess an issue promptly while depending on another supplier to resolve it. The maintenance agreement should preserve this distinction instead of implying certainty where it cannot reasonably exist.

Priority should reflect business impact, rather than the strength of the wording in a message. Consider how many users are affected, which activity has stopped, whether a workaround exists and whether data integrity is at risk. An inability to save any orders needs a different response from one user being unable to retain a filter preference. Labelling everything urgent makes genuinely critical incidents harder to see.

Service hours also belong in the agreement. Monitoring outside office hours does not automatically include developer intervention throughout the night. Describe holiday coverage, the emergency contact route and any additional intervention conditions. The support model should match the business’s actual tolerance for disruption, rather than an assumption that someone will always be available.

Monitoring must produce a useful action

Checking that a server responds is only part of monitoring. Can users sign in? Are important records being created? Is background work accumulating beyond its normal range? Checks tied to the application’s purpose connect technical availability with business outcomes. Every meaningful alert needs an owner and a reason for intervention.

Consider a fictional quotation application that sends notifications through a queue. Its home page remains available while the age of waiting messages steadily increases. If the maintenance team tracks that condition and the business can see unsent enquiries, the problem does not need to remain hidden for days. A list of customers requiring manual contact allows work to continue while the technical cause is investigated.

Creating an alert for every unsuccessful attempt is not a useful alternative. Repeated low-value notifications consume attention and make meaningful warnings easier to overlook. Review which alerts led to action and reduce unnecessary noise. When a check is removed, record why and identify the control that now covers the relevant risk.

An update schedule is more than installing new releases

Planning is difficult without knowing what the application depends on. Maintain an inventory of packages, runtime components and external services. Assess whether an update addresses a vulnerability, changes behaviour or introduces compatibility requirements. Deferring every release indefinitely and deploying every release immediately are both poor substitutes for an informed decision.

Testing an update should extend beyond opening the first screen. Exercise important journeys such as signing in, creating records, enforcing permissions, generating reports and exchanging data with connected systems. Establish appropriate test-data rules instead of casually copying personal information into development environments. Record the checks so the next maintainer can see what was actually verified.

Supplier changes also need a place in the calendar. A retired connection method or an expiring certificate should not become an urgent task on its final day. Keep the notification address active and assign someone to assess relevant announcements. These modest administrative duties can have a substantial effect on continuity when they are forgotten.

Decide what rollback can actually achieve

A maintenance release needs a description of the change, validation steps and a suitable release window. Consider periods when the business processes its most important transactions. Prepare a short explanation when users will encounter different behaviour. Even apparently invisible technical updates deserve a check of essential journeys after deployment; a successful deployment message does not establish that the service works correctly.

A rollback plan is more than putting old application files back. If the release changes the data structure, the previous application may not understand newly written records. Discuss transactions created after release, responsibility for the rollback decision and the evidence needed to confirm recovery. Sometimes a forward correction is more appropriate than returning to an earlier version. Make that reasoning explicit.

Reserve a short follow-up period after the release. Review errors, waiting background tasks and essential business outcomes. Tell the business what changed, what was checked and which limitations remain. Completion should be visible to the people running daily operations, rather than existing only in an engineering conversation.

A backup becomes credible through a restoration exercise

A successful backup notification does not prove that the application can be restored. Establish whether the backup covers the database, uploaded files and necessary configuration. Assess access permissions, retention and separation from the running system. The business should describe how much lost work it can tolerate and how quickly it needs the service to return.

Run restoration exercises in an isolated environment. Once the application opens, inspect important records and their related files. A completed copying operation is not sufficient evidence. A missing key or forgotten storage location may only become apparent when the restored application is used. Record the result and update recovery instructions so they reflect an executable process.

The exercise should also reveal dependencies on individual people. If only one engineer knows where a required setting lives, the instructions are incomplete. Ask another authorised person to follow the documented steps and note where they need help. That review turns recovery knowledge into a shared operational capability rather than a memory held by one colleague.

The maintenance report should explain the work

Do not limit a periodic review to the number of closed tickets. Include recurring defects, tested backups, assessed updates and risks that were deliberately deferred. Many tickets caused by one underlying problem call for a different response from several users needing the same training. Explain the situation behind the count so the business can choose an appropriate next step.

Show unresolved work that affects future decisions. An import repeatedly corrected by hand may now justify a development project. An ageing component may need a planned replacement. State whether each action falls within maintenance or requires separate approval, and identify its owner. Discussing these continuing responsibilities when defining a custom software project makes post-launch expectations easier to manage.

A short review should end with decisions that someone can act on: the agreed update window, the next recovery exercise, the owner of an unresolved dependency or a request for additional business information. A report that merely repeats technical activity leaves the practical consequences unexplained. Maintenance becomes more useful when the people funding it understand which decisions remain theirs.

Frequently asked questions

Does software maintenance include new features?

That depends on the agreed scope. Defect corrections, security updates, user assistance and new development should be described separately through examples. A feature does not automatically become maintenance because it fits inside an existing screen. Its effects on business rules, data, integrations and testing still need assessment before the work is approved.

Why continue maintenance when the system appears healthy?

The absence of visible defects does not mean dependencies, accounts and connected services have stopped changing. Access reviews, update assessments, restoration exercises and monitoring remain relevant. Their frequency can reflect the importance of the application and the pace of change. A quieter period can be a useful opportunity to complete planned preventive work.

What information should a support ticket contain?

Describe the expected result, what actually happened, the approximate time and the steps that reproduce the issue. A relevant record identifier may help when shared through an appropriate channel. Avoid sending passwords, payment details or unnecessary personal data. Mask sensitive areas in screenshots and allow the support team to request further information when needed.

Does every update require downtime?

No. The need for interruption depends on the change and the application’s architecture. Certain data migrations or infrastructure changes may require a maintenance window, while other updates may be released without a visible interruption. Assess the impact and choose an appropriate method. Avoid promising uninterrupted operation for every future change regardless of its nature.

What should be handed over when the maintenance provider changes?

Provide source code together with deployment instructions, account ownership information, the dependency inventory, backup arrangements, open issues and known limitations. Having the incoming team run the application in a controlled environment provides useful evidence that the documentation works. Removing obsolete access and rotating relevant credentials should also be part of the transition plan.

All articles