Drupal maintenance and support

Overdue maintenance costs more than maintenance.

Structural follow-up on updates, security and backups, so you never end up with a three-year backlog to fix.

Request an audit

Drupal maintenance and support

Maintaining a Drupal site isn't an update button.
It's a rhythm: keeping up with core and contributed security releases, moving the PHP version under the site along, checking backups and testing after every update that everything still works, ideally before your visitor notices anything.
I do that for sites I built myself and for sites I take over.

Timeline of a regular maintenance rhythm

What does Drupal maintenance cover?

Maintenance consists of four parts that can each fail independently: security, the stack underneath, backups and testing.
Your hosting provider usually covers part of that, and that's exactly where the confusion sits.

Security releases for core and contributed

Drupal publishes security advisories on Wednesdays in fixed windows, so they're plannable.
Core is the easy part: pull in the patch version with Composer, test on staging, deploy.
The work is in the contributed modules, because a business site runs on a few dozen of them, each with its own maintainer.
Some get a fix within the day, others get declared unsupported.
The second one isn't an update but a decision: replace it, take it over into custom code, or drop it.

PHP versions and the rest of the stack

Maintenance also covers what runs underneath Drupal, and that comes with hard deadlines.
Drupal 11 requires PHP 8.3 at minimum.
Drupal 10 runs from PHP 8.1, but PHP 8.1 has had no security fixes since 1 January 2026, and PHP 8.2 falls into the same gap after 31 December 2026.
So a site can be fully up to date at the Drupal level and still be running a PHP version nobody patches any more.
The same goes for the database, the web server and the Node version behind your theme build.

Backups you can rely on

A backup nobody looks at isn't a backup, it's an assumption.
The three mistakes I see most often: the database is kept but the files folder isn't, nobody checks whether the backup is still running, and the restore procedure isn't written down anywhere.
Under an SLA it works like this: the hosting partner makes an automatic backup every day and keeps it for 14 days, I check every month that those backups are actually being made, and before every update I make sure there is a fresh backup.
If an update fails, I restore that backup and look for a solution.

Testing after every update

An update is only done when the site still works.
A site can be online and broken at the same time: the form sends nothing, cron has stopped running, the search index is empty.
That's why after every update I check the most important pages and features, not just whether the homepage loads.

Why overdue maintenance costs more than maintenance

A backlog isn't standing still, it grows.
Being one minor release behind is routine work.
Being three years behind is a project, because the problems compound: the PHP version needs to move too, some modules no longer exist in a compatible version, and your custom code uses APIs that have been removed.

The version history makes that concrete.
Drupal 8 has been out of support since November 2021, Drupal 9 since November 2023, and Drupal 7 since 5 January 2025.
Sites still on those no longer need an update but a migration, and that difference is a factor in both time and budget.
On top of that, without maintenance the knowledge about your site disappears too: no changelog, no documented patches, no deploy log.
At the next incident you then pay for investigation first, and that costs more than the fix.

Ad hoc or an SLA: when do you choose which?

  • ✓ You sell online, or your site is the entry point for enquiries, so a day of downtime is a measurable loss.
    Then an SLA.
  • ✓ If you fall under the European Accessibility Act or under the public-sector obligations from directive 2016/2102, you need to be able to substantiate your accessibility level, with an accessibility statement and a check after every release.
    Whether your service falls within scope depends on your sector and on how it's been transposed into Belgian or Dutch law: have that checked legally.
    In that case, an SLA.
  • ✓ You have a brochure site with no login, payments or integrations, and your host handles the core updates.
    A round once a quarter is enough.
  • ✓ You already have someone in-house who knows Drupal.
    Then an escalation agreement makes more sense, and that falls under technical management and consultancy.

What's in my SLA

An SLA is an agreement about time, scope and access, not a promise that nothing will ever break.
Below is what I set out, including what's not in it.
That last part is what the discussions are usually about.

Response time and resolution time are two separate agreements

Response time is how fast you get a first real reply, resolution time is how fast the problem is actually gone.
Mixing those two up is the most common mistake in support contracts, because I can put the first one on paper and the second depends on the cause.

Taking over maintenance from another party
Priority Example Response time
1 – Critical Site offline, hacked, critical security problem Within 1 working day
2 – High Site online, but a feature doesn't work Within 2 working days
3 – Normal Small bug, question, small change Within 5 working days

You report a problem by email, and for a critical problem you also call or text.
The times above are response times, not resolution times.
Fixing the problem is a best-effort commitment: I look for a solution as fast as reasonably possible, but I don't guarantee a resolution time or uninterrupted availability, because that also depends on your hosting and other third parties.
I won't fix an outage at your payment provider or host any faster than they can.
A security update that Drupal marks as critical or high risk, I assess within 3 working days of publication. Then I install the update, or take temporary measures if it can't be installed safely yet.
A contract that guarantees resolution times nobody can meet is worthless at the first incident.

Scope: what's included and what isn't

  • Included: security and maintenance updates of Drupal core and the contributed modules within the same major version, testing after every update, a monthly check of updates and backups, analysis and repair of outages and security problems, and answers to your questions about the site.
  • Not included: major updates of Drupal or PHP, such as Drupal 10 to 11, and replacing modules that are no longer supported, new features or page types, design or layout changes, content, copy, photos and translations, SEO, ads and analytics, and anything outside the Drupal site itself, such as hosting, domain name and external services.
  • Hour budget: a fixed number of hours per month. Every question and every change counts, added up per day and rounded up to the next quarter hour. Hours you don't use in a month expire at the end of that month. On request you get an overview of the work and the time used.
  • Outside the budget: I always flag extra work up front, with an estimate or a quote, and I only start after you agree. A change that takes longer than 30 minutes is discussed first. Two exceptions: updates and security carry on when the hour budget is used up, up to 3 extra hours per contract year, and for a critical problem I can start right away for up to 3 hours to find the cause and limit the damage.

I keep a major version jump outside the monthly budget, because the budget is sized for maintenance, not for an upgrade project.
For a clean Drupal 10 site with little custom code, the jump to 11 stays limited; with a lot of custom code and modules without a compatible version, it adds up.
I estimate it per site upfront.
Outside scope doesn't mean I won't do it, only that you won't get a surprise invoice for it.

When I'm available

I work on working days, Monday to Friday excluding Belgian public holidays, within fixed support hours set out in the SLA.
All the response times above only run within those hours, so a report on Friday evening counts as received on Monday.

I don't promise a 24/7 on-call service.
I'm one person, David Porschmann, freelance Drupal specialist, and genuine on-call cover with guaranteed follow-up needs a team.
Work you ask for outside my working hours carries a 50% surcharge, except for a critical problem.
During holidays or illness there is no stand-in and the response times are paused. I announce planned absence in advance, where possible at least a week ahead.
If a site really has to run day and night, we put first line with your hosting provider and I'm the second line.

Who has access and who owns what

Access is always named to a person.
No shared admin accounts, no passwords in an email thread, two-factor authentication where possible, and each person's own SSH key.
We record per account who owns it and who has which access: Drupal, hosting, DNS, domain name and Search Console.
In Drupal you get your own role to manage the content. The configuration lives in code and I manage it, so an update never overwrites anything unexpectedly.

Just as important is what happens if we stop working together.
Your site's content and your domain name are yours. If I arrange the hosting, it runs through my account with the hosting partner, on your behalf, and that is written down in the SLA.
An SLA runs per year and renews by one year each time. You can cancel up to one month before the end.
If we stop, you get all access details within 10 working days and, on request, a full export of your site: code, database and files.
No barrier to leaving, because a client who stays because switching is too much hassle isn't a satisfied client.

The maintenance rhythm from now until 2028

The next twelve months are atypical, because two dates fall in the same week.
Drupal 10 reaches end of life on 9 December 2026, and Drupal 10.6.0 is the last minor release.
Drupal 12 is released in the week of 7 December 2026, exactly then.
Drupal 11 is today's stable version, at 11.4.x.
What that end of support means per scenario, and how to plan the step to 11, is in my article on Drupal 10 losing support in December 2026.

If you're on Drupal 10, plan the step to 11 now, not to 12, because on its release day Drupal 12 won't yet be the version your contributed modules are tested against.
If you're already on 11, maintenance is mostly about keeping up with minors.
If you're on Drupal 7, 8 or 9, there's a risk maintenance alone won't solve.

Accessibility belongs in this rhythm too.
The European Accessibility Act, directive 2019/882, has applied since 28 June 2025 to the products and services within its scope, with WCAG 2.2 level AA and EN 301 549 as the standards.
Whether your site falls under it depends on your sector and on the national transposition.
The digital accessibility page covers how I check that.
Every new component can break it again, so a contract includes a periodic check on the main flows instead of a one-off audit.

What maintenance costs

An SLA includes a fixed number of hours per month for updates, checks, questions and small changes.
How many hours your site needs depends on the contributed modules, the custom code and the deployment process. I look at that per site up front, so the agreement fits what is actually running.
The SLA is invoiced per year in advance. Extra work is charged at 75 euros per hour excluding VAT. Hosting and domain name are invoiced separately.
The price is indexed every year and you hear the new price at least two months in advance. My hourly and day rates are on rates.

Taking over maintenance from another party

A takeover starts with an audit, not with the first update.
I map out what's there: versions, open advisories, unsupported modules, patches and whether they're documented, the custom code, and whether the backup has ever been restored.
That takes half a day to a full day and produces a list, ordered by impact.
Sometimes the outcome is that maintenance isn't the right answer.

Want me to take over maintenance?

Describe your situation: which Drupal version you're running, who handles it now, and what's going wrong.
I'll give you an honest picture within 24 hours of what's needed and whether an SLA is worth it in your case. Get in touch, even with half a story.

Frequently asked questions

How much does it cost to maintain a website?

An SLA includes a fixed number of hours per month for updates, checks, questions and small changes. How many hours you need depends on the number of contributed modules, the custom code and the integrations with external systems.
Extra work costs 75 euros per hour excluding VAT and only happens after you agree. Hosting and domain name are invoiced separately.
I look at every site up front, because maintaining a site that is years behind starts with catch-up work.

What is the difference between an SLA and on-demand maintenance?

With on-demand maintenance you pay for the hours you use and the turnaround depends on my schedule at that moment.
With an SLA, capacity is reserved in advance and there is a response time per priority level on paper.
The work is the same, the certainty about timing is not.
On demand is fine as long as a day of downtime doesn't cost money, so rarely for a webshop.

What isn't included in a maintenance contract?

Major updates of Drupal or PHP, such as Drupal 10 to 11, and replacing modules that are no longer supported.
New features, design and layout changes, content and translations, SEO and marketing, hosting, domain name and external services are also excluded. I do report outages at a third party and follow them up.
That boundary is written into the contract, because these are the points where unexpected invoices otherwise come from.
I do take on work outside the scope, through a separate quote and only after you agree.

What happens if a security release comes out on a Friday evening?

A security update that Drupal marks as critical or high risk, I assess within 3 working days of publication.
If the risk is critical, I let you know and install the update, or first take a temporary measure if the update can't be installed safely yet.
A report on Friday evening or at the weekend counts as received on Monday. There is no 24/7 on-call service.
Drupal publishes advisories on Wednesdays in fixed windows, so most cases can be planned.

Doesn't my hosting provider already do this?

Partly, and how big that part is varies a lot per host.
With managed hosting you usually get the server, the PHP version and a backup schedule, and with some providers also the patch updates of Drupal core.
What is almost never included: the contributed modules and the decision on what to do with a module that becomes unsupported, your custom code, the theme build and the question whether that backup was ever actually restored.
So ask your host in writing what they cover, then you see what is left and whether that calls for an SLA or a round every quarter.

Who owns the site, the domain and the hosting?

Your site's content and your domain name are yours, and that is in the contract.
If I arrange the hosting for you, it runs through my account with the hosting partner. An annex lists per account who owns it and who has which access.
If we stop, you get all access details within 10 working days and, on request, a full export of code, database and files.
Check this with your current provider too, because if the domain is registered to an agency, you depend on their cooperation when you switch.

A question about this topic?

Briefly describe your situation, and I'll let you know what's going on and what it would cost. No sales pitch.

Privacy policy

Who we are

This policy applies to David Porschmann (freelance web developer).
Contact: support@porschmann.be.

What data we process

Name, email address, company name (optional), and your message or enquiry. When you visit our website, we also process limited technical data (such as IP address and browser type) for security and analytics purposes.

Why we process your data (legal basis)

  • To respond to your enquiry or provide a quotation (consent or pre-contractual necessity).
  • For administration and invoicing during collaboration (contractual necessity).
  • For security and troubleshooting (legitimate interest).

Retention periods

Contact form submissions: maximum of 24 months.
Client records and invoicing: according to legal retention periods.

Sharing with third parties

We do not share your data with third parties, except with processors who help us host the website, send emails, or handle administration. Data processing agreements have been concluded with these partners.

Your rights

Right of access, rectification, erasure, restriction, data portability, and withdrawal of consent.
Email us at support@porschmann.be.

Security

We take appropriate technical and organisational measures to protect your data.

Cookies and analytics

Brief explanation of the tools used (e.g. Matomo, Clarity, GA) and a link to the cookie policy, if applicable.

Contact

Questions about this policy?
support@porschmann.be