Drupal Maintenance Contract Guide
Templates and guidelines for Drupal maintenance and support contracts.
Source: https://raw.githubusercontent.com/theodorosploumis/notes/refs/heads/master/drupal/contract.md
Overview
This skill helps define, price, and manage Drupal maintenance contracts including SLAs, task lists, and project handoff procedures.
Parameters to Consider
Before drafting a contract, assess these project factors:
- Drupal version - Newer versions have different maintenance needs
- Hosting environment - Managed vs self-hosted affects responsibility
- SLA requirements - Define uptime guarantees (uptime.is)
- User accounts - Anonymous registration increases security concerns
- User permissions/roles - Complexity affects maintenance effort
- 3rd party integrations - APIs, auth, external JS (more = more issues)
- Database size & growth - Large databases need special handling
- Migration history - Older migrations may have legacy issues
- Website activity - Traffic, bandwidth, page impressions, peak loads
- Custom code - Custom modules/themes require specialized maintenance
- Multisite setup - Multiple sites multiply maintenance effort
- eCommerce - Commerce sites need special treatment and security
- Special requirements - Government, healthcare, etc. may have compliance needs
Common Maintenance Tasks
Security & Updates
- Drupal core security updates (with dependencies)
- Drupal core minor version upgrades (e.g., 8.9.2 → 8.9.11)
- Contributed module security updates
- Contributed theme security updates
- 3rd party integration updates (API endpoints, libraries)
- Apply patches when upstream commits land
- Database and entity updates after code changes
Support & Monitoring
- Bug fixes (existing code & infrastructure)
- Offsite backups (db, public files, code) with restore testing
- Disaster recovery planning
- Support channels: phone, email, ticketing system
- 24×7 support availability (weekends/holidays)
- Response time commitments: 1/8/24/72 hours
- Uptime monitoring
- Version control with 3 environments (dev, stage, prod)
Quality & Security
- Security auditing
- Spam filtering and cleansing
- Malware filtering and cleansing
- Hacked website repair
- Broken link scanning
- System/infrastructure updates
Reporting & Documentation
- Weekly/monthly reports
- Knowledge database creation (maintenance documentation)
- Internal support sheet updates (versions, credentials)
Time Estimates (Reference Only)
Monthly hours needed based on project complexity:
| Project Type |
Monthly Hours |
| Simple D8+ site, few modules |
~1 hour |
| Multisite (5 simple sites) |
~3 hours |
| Complex site, many modules/integrations |
6-10 hours |
| Simple Commerce site |
~6 hours |
| Large site with user accounts, 3rd party |
10+ hours |
Maintenance Plan Template
Proposed schedule (from AdciSolutions):
| Frequency |
Task |
| Monthly (1st Wednesday) |
Minor Drupal version update (bug fixes) |
| Monthly (3rd Wednesday) |
Check security releases in contrib modules |
| Monthly + 2 days post-deploy |
Track errors (GA, logs, QA) |
| Quarterly |
SEO audit |
| Semi-annually |
Accessibility compliance check |
| Semi-annually |
Google PageSpeed optimization |
| Semi-annually |
Refactor frontend code |
| Annually |
PHP version update |
| 2 weeks before expiry |
SSL certificate renewal |
| Every update |
Check custom code functionality |
| Every update |
Update internal Support Sheet |
| Annually |
Review/renew Support Contract terms |
Sample Maintenance Plans
Plan A - Basic ($2000/yr)
- Core security updates ✓
- Core minor version upgrade ✓
- Contrib modules/themes security updates ✓
- Bug fixes (existing code) ✓
- Version control with dev/stage/prod ✓
- Email support ✓
- Response time: 24hr
- Monthly report ✓
- 12-month contract
- Extra tasks: $35/hr
Plan B - Standard ($3000/yr)
- Everything in Plan A
- Response time: 8hr
- Extra tasks: $35/hr
Plan C - Premium ($5000/yr)
- Everything in Plan B
- Phone support ✓
- 24×7 support ✓
- Response time: 2hr
- Extra tasks: $30/hr
Drop Support / Handoff Procedure
When ending maintenance for a client:
Pre-Handoff
Drupal Account Cleanup
DNS & Infrastructure
Hosting Cleanup
Project Closure
Contract Clauses to Define
- SLA terms - Uptime %, response times, resolution times
- Support hours - Business hours vs 24×7
- Contact methods - Email, phone, ticketing system
- Included work - What's covered vs billable
- Excluded work - New features, major upgrades, redesigns
- Hourly rate - For out-of-scope tasks
- Contract duration - 6/12 months with renewal terms
- Termination clause - Notice period, handoff procedure
- Backup responsibilities - Who maintains backups and for how long
- Liability limits - Max liability for data loss, downtime
Resources
1---2name: drupaltools-maintenance-contract3description: Drupal maintenance and support contract templates, task lists, SLA parameters, and handoff procedures. Use this skill when the user asks about Drupal maintenance contracts, support plans, SLA definitions, maintenance pricing, or needs guidance on dropping support/handoff procedures for a Drupal project.4---56# Drupal Maintenance Contract Guide78Templates and guidelines for Drupal maintenance and support contracts.910Source: https://raw.githubusercontent.com/theodorosploumis/notes/refs/heads/master/drupal/contract.md1112## Overview1314This skill helps define, price, and manage Drupal maintenance contracts including SLAs, task lists, and project handoff procedures.1516## Parameters to Consider1718Before drafting a contract, assess these project factors:1920- **Drupal version** - Newer versions have different maintenance needs21- **Hosting environment** - Managed vs self-hosted affects responsibility22- **SLA requirements** - Define uptime guarantees ([uptime.is](https://uptime.is))23- **User accounts** - Anonymous registration increases security concerns24- **User permissions/roles** - Complexity affects maintenance effort25- **3rd party integrations** - APIs, auth, external JS (more = more issues)26- **Database size & growth** - Large databases need special handling27- **Migration history** - Older migrations may have legacy issues28- **Website activity** - Traffic, bandwidth, page impressions, peak loads29- **Custom code** - Custom modules/themes require specialized maintenance30- **Multisite setup** - Multiple sites multiply maintenance effort31- **eCommerce** - Commerce sites need special treatment and security32- **Special requirements** - Government, healthcare, etc. may have compliance needs3334## Common Maintenance Tasks3536### Security & Updates37- Drupal core security updates (with dependencies)38- Drupal core minor version upgrades (e.g., 8.9.2 → 8.9.11)39- Contributed module security updates40- Contributed theme security updates41- 3rd party integration updates (API endpoints, libraries)42- Apply patches when upstream commits land43- Database and entity updates after code changes4445### Support & Monitoring46- Bug fixes (existing code & infrastructure)47- Offsite backups (db, public files, code) with restore testing48- Disaster recovery planning49- Support channels: phone, email, ticketing system50- 24×7 support availability (weekends/holidays)51- Response time commitments: 1/8/24/72 hours52- Uptime monitoring53- Version control with 3 environments (dev, stage, prod)5455### Quality & Security56- Security auditing57- Spam filtering and cleansing58- Malware filtering and cleansing59- Hacked website repair60- Broken link scanning61- System/infrastructure updates6263### Reporting & Documentation64- Weekly/monthly reports65- Knowledge database creation (maintenance documentation)66- Internal support sheet updates (versions, credentials)6768## Time Estimates (Reference Only)6970Monthly hours needed based on project complexity:7172| Project Type | Monthly Hours |73|--------------|---------------|74| Simple D8+ site, few modules | ~1 hour |75| Multisite (5 simple sites) | ~3 hours |76| Complex site, many modules/integrations | 6-10 hours |77| Simple Commerce site | ~6 hours |78| Large site with user accounts, 3rd party | 10+ hours |7980## Maintenance Plan Template8182Proposed schedule (from AdciSolutions):8384| Frequency | Task |85|-----------|------|86| Monthly (1st Wednesday) | Minor Drupal version update (bug fixes) |87| Monthly (3rd Wednesday) | Check security releases in contrib modules |88| Monthly + 2 days post-deploy | Track errors (GA, logs, QA) |89| Quarterly | SEO audit |90| Semi-annually | Accessibility compliance check |91| Semi-annually | Google PageSpeed optimization |92| Semi-annually | Refactor frontend code |93| Annually | PHP version update |94| 2 weeks before expiry | SSL certificate renewal |95| Every update | Check custom code functionality |96| Every update | Update internal Support Sheet |97| Annually | Review/renew Support Contract terms |9899## Sample Maintenance Plans100101### Plan A - Basic ($2000/yr)102- Core security updates ✓103- Core minor version upgrade ✓104- Contrib modules/themes security updates ✓105- Bug fixes (existing code) ✓106- Version control with dev/stage/prod ✓107- Email support ✓108- Response time: 24hr109- Monthly report ✓110- 12-month contract111- Extra tasks: $35/hr112113### Plan B - Standard ($3000/yr)114- Everything in Plan A115- Response time: 8hr116- Extra tasks: $35/hr117118### Plan C - Premium ($5000/yr)119- Everything in Plan B120- Phone support ✓121- 24×7 support ✓122- Response time: 2hr123- Extra tasks: $30/hr124125## Drop Support / Handoff Procedure126127When ending maintenance for a client:128129### Pre-Handoff130- [ ] **Full backup** of Production (database, public files, code)131132### Drupal Account Cleanup133- [ ] Change User 1 email or create new Admin accounts for new company134- [ ] Remove/change emails for non-admin company accounts135- [ ] Remove company emails from Security Updates alerts136- [ ] Change 3rd party credentials (SOLR, Elasticsearch, etc.)137- [ ] Remove your credentials from the website138139### DNS & Infrastructure140- [ ] Remove DNS records pointing to `.mycompany.domain` subdomains (Cloudflare, etc.)141- [ ] Delete site aliases on server for company subdomains142143### Hosting Cleanup144- [ ] Remove SSH keys and `known_hosts` entries145- [ ] Remove all `.git` folders146- [ ] Remove CI/CD credentials147- [ ] Remove your email from hosting provider148149### Project Closure150- [ ] Disable testing tools (GitHub Actions, BitBucket Pipelines, CircleCI)151- [ ] Disable server health monitoring152- [ ] Archive project in internal PM tool (tasks/issues)153- [ ] Update internal documentation and Support Sheet154- [ ] Check company blog for project references (case studies) and update155- [ ] **Team retrospective**: Discuss why support was dropped (lessons learned)156157## Contract Clauses to Define158159- **SLA terms** - Uptime %, response times, resolution times160- **Support hours** - Business hours vs 24×7161- **Contact methods** - Email, phone, ticketing system162- **Included work** - What's covered vs billable163- **Excluded work** - New features, major upgrades, redesigns164- **Hourly rate** - For out-of-scope tasks165- **Contract duration** - 6/12 months with renewal terms166- **Termination clause** - Notice period, handoff procedure167- **Backup responsibilities** - Who maintains backups and for how long168- **Liability limits** - Max liability for data loss, downtime169170## Resources171172- [Wikipedia - Service Level Agreement](https://en.wikipedia.org/wiki/Service-level_agreement)173- [Appnovation Drupal Support](https://www.appnovation.com/services/drupal-development/support-maintenance)174- [OpenSense Labs - Support Guide](https://opensenselabs.com/blog/articles/a-drupal-support-and-maintenance-guide)175- [Drupal Partners - Maintenance](https://www.drupalpartners.com/services/drupal-maintenance-and-support-company)176- [Maintainn - WordPress/Dupal Maintenance Plans](https://maintainn.com/plans)177- [Freelock - Drupal Protection Plan](https://www.freelock.com/product/drupal-protection-plan)178- [Adci Solutions - Maintenance Importance](https://www.adcisolutions.com/knowledge/importance-website-maintenance)