Which open-source CRM fits your team and stack
A team that must self-host a CRM should start with the stack it already runs. SuiteCRM fits a PHP and MySQL or MariaDB team that wants a broad feature set in one core product. EspoCRM fits a team that wants a lighter PHP CRM on the same kind of database, with paid extensions added only where needed. Twenty fits a PostgreSQL and TypeScript team that is comfortable running Redis and a Node-based worker. Odoo CRM fits teams already on Odoo or planning an Odoo back office, where the CRM app sits inside a wider ERP. Vtiger, CiviCRM and the other options on this page are worth a look only for the specific cases covered elsewhere in this comparison.
In practice, the shortlist is usually decided by the existing stack and hosting skills, not by features. A team with strong MariaDB and Apache operations will find SuiteCRM 8 or EspoCRM easier to keep patched than a Postgres and Redis stack it has never run. License and paid tiers come second, but they still change the bill. Check which functions you need before you commit: EspoCRM reports and workflows sit in the paid Advanced Pack for self-hosters, Twenty's SSO, row-level permissions and audit logs sit on paid plans, and Odoo CRM's features depend on whether you run Community or Enterprise. Confirm each of these with the vendor against your own requirements.
Before you choose, write down three things: the database and runtime your operations team supports, the identity provider you must sign in against, and the number of users and custom objects you expect in year one. Then ask each shortlisted vendor, or a partner such as DeployOpen, for a written scope covering installation, upgrades, backups and any extensions you will need. Treat the stack decision as the first gate and the license as the second. This ordering keeps the migration cost of a wrong choice visible before data is loaded.
Which open-source CRM suits which scenario
This table matches common team profiles and requirements to the CRM most likely to fit, with the condition that makes each choice hold and one item to confirm before committing. Read each row against your own stack, identity provider and data obligations, not as a ranking, because the best fit changes with those inputs.
| Scenario | Best fit | Why |
|---|---|---|
| PHP and MySQL or MariaDB team | SuiteCRM 8 or EspoCRM | Both run on PHP with MySQL or MariaDB, so existing hosting skills carry over. Confirm your PHP and database versions against the SuiteCRM 8.10.x matrix or the EspoCRM server configuration list. |
| PostgreSQL and Redis team comfortable with TypeScript | Twenty | Twenty runs a server, a worker, PostgreSQL and Redis, and asks for at least 2 GB of RAM. Confirm you can support the Node-based stack and that the open-source core covers your needs before considering paid plans. |
| Team that needs SAML or LDAP login | SuiteCRM 8 (SAML or LDAP) or EspoCRM (LDAP or OIDC) | SuiteCRM 8 supports LDAP and SAML without a paid tier, but SAML logout at the identity provider does not end the SuiteCRM session. Confirm your identity provider flow and logout requirements in the SuiteCRM SAML reference. |
| Team wanting CRM plus back office in one suite | Odoo CRM app | The CRM app is listed in both Community and Enterprise editions of Odoo, so it sits inside a wider ERP. Confirm which Odoo modules you need, since the wider suite adds operating scope. |
| Nonprofit donor model | CiviCRM | CiviCRM is built around donors, memberships, events and mailing, which general CRMs handle through customization. Confirm the release track and hosting option with the CiviCRM project before planning. |
| Team already using Vtiger | Vtiger (open source edition) | Staying on Vtiger avoids a data migration and keeps existing users and processes. Confirm which Vtiger edition and license terms apply to the features you rely on, since the commercial cloud editions differ. |
| Team that needs SuiteCRM 7 data kept on a supported line | SuiteCRM 7.15 | SuiteCRM 7.15 is an extended support release with security fixes until January 2028. Confirm the support date with SuiteCRM before planning a move to SuiteCRM 8, which is a migration rather than an upgrade. |
What each open-source CRM is and how it is licensed
The four main contenders share a self-hosted model, but their licenses, release tracks and paid layers differ. Read each card for the license terms, the current release line and the part of the product that a paid contract or separate edition may cover.
SuiteCRM
SuiteCRM is licensed under AGPL-3.0, and the SuiteCRM 8 core repository carries the same license. SuiteCRM Ltd sells support, hosting, implementation, training and migration services around the free software, so those costs are separate from the software itself. Two release lines run in parallel, so confirm early which one you will deploy. If you have a SuiteCRM 7 instance, the move to version 8 is a migration with its own guide, not an in-place upgrade.
EspoCRM
EspoCRM is licensed under AGPL-3.0, and the open-source edition can be downloaded and self-hosted for free. Paid extensions sit on top of the core. The Advanced Pack adds reports, business process management and workflows, and the Sales Pack adds products, quotes, invoices and related sales modules. Confirm which extensions your scope needs, because they are licensed separately from the core and may need a separate quote. The current line is 10.0, following the 9.0.0 release of January 20, 2025.
Twenty
Twenty is mostly AGPL-3.0 with an additional application exception. Files marked with an Enterprise license header fall under a commercial license, and the SDK and UI packages are MIT. So open source covers the core, but not every file in the repository. Check the license header on any file you plan to modify or redistribute. Releases are frequent, with v2.48.0 published on October 16, 2026, so plan a regular upgrade cadence before you rely on a specific version.
Odoo CRM
The Odoo code is published under LGPL-3.0 in the Community edition, and the CRM app is available in both Community and Enterprise. Enterprise is a separate commercial edition, not a free add-on to Community, so the license you need depends on which features you choose. Odoo 20.0 was released in September 2026, with standard support planned until September 2029. Security updates arrive only during standard support, so confirm the support window for your chosen version.
Vtiger for specific cases
Vtiger CRM is a named alternative for teams that want to compare an open source edition under the Vtiger Public License against Vtiger's commercial cloud editions. Check the license text and the feature split between the open source and commercial editions yourself, because this comparison does not cover Vtiger's license terms in detail.
CiviCRM for specific cases
CiviCRM is AGPL-3.0 and is built for nonprofit work. Consider it when donor, membership and event records drive the choice more than general sales pipelines. Confirm the hosting platform and release track you plan to follow before you compare it with the general CRMs in this roundup.
How the open-source CRM options compare on capability
This table compares SuiteCRM, EspoCRM and Twenty on license, paid extensions, stack, identity, APIs, automation, data model and release cadence. Where a cell says to confirm, check that point with the vendor before you shortlist, and read the rows against your team's PHP or TypeScript skills and your identity provider. Odoo CRM, which ships in Community and Enterprise editions, is covered in the editions discussion below.
| Capability | SuiteCRM | EspoCRM | Twenty |
|---|---|---|---|
| License | AGPL-3.0 core, maintained by SuiteCRM Ltd and SalesAgility | AGPL-3.0 open-source edition, free to download and self-host | Mostly AGPL-3.0 with an application exception; Enterprise-header files are commercial |
| Paid extensions or editions | Paid support, hosting, implementation and training services from SuiteCRM Ltd; extension terms to confirm | Advanced Pack (reports, BPM, workflows) and Sales Pack as paid add-ons; cloud plans include the Advanced Pack | Free self-hosted core; Pro at 9 US dollars per user per month and Organization at 19 (Twenty pricing page) |
| Stack and database needs | PHP application on MySQL or MariaDB, served by Apache 2.4 in the 8.10.x matrix | PHP application on MySQL, MariaDB or PostgreSQL 15, served by Apache, Nginx or IIS, with cron for background jobs | TypeScript application with NestJS, React, PostgreSQL and Redis; the Docker Compose guide runs a server and worker |
| Supported databases | MySQL 8.0 and 8.4; MariaDB 10.6, 10.11, 11.4 and 11.8 (8.10.x matrix) | MySQL 8.0 or newer, MariaDB 10.6 or newer, PostgreSQL 15 | PostgreSQL with Redis; confirm supported PostgreSQL versions in the self-hosting docs |
| Identity options | LDAP (AUTH_TYPE=ldap) and SAML (AUTH_TYPE=saml); SAML 8.7.0+ does not support IdP-initiated logout | OIDC since 7.3 with group-to-team mapping and backchannel logout; LDAP for Active Directory and OpenLDAP; built-in 2FA is incompatible with OIDC | SSO on Organization and Enterprise plans; SCIM provisioning and IP allow-listing on Enterprise |
| API styles | Confirm REST and GraphQL coverage for your SuiteCRM 8 version in the documentation | REST with API key, HMAC (documented as most secure) and basic authentication (not recommended), via dedicated API users | GraphQL and REST APIs with webhooks on all plans, per the pricing page |
| Workflow and automation | Confirm workflow and process tooling available in your edition and release line | Workflows and BPM in the Advanced Pack; Formula Script in before-save scripts, workflows and BPM | Workflow automation, email and calendar sync; confirm limits on the self-hosted core |
| Custom fields and objects | Confirm how custom modules and fields are built and how upgrades treat them | Entity Manager for entities and fields; Formula scripts for validation and logic | Custom objects and fields defined as code; unlimited custom objects and fields on all plans |
| Release and support cadence | 8.x minor releases about every eight weeks; patches are security and bug fixes only; 8.10.2 released July 31, 2026; 7.15 security fixes until January 2028 | 10.0.0 released July 2, 2026; 10.0.10 released October 14, 2026; previous major 9.0.0 released January 20, 2025 | Frequent releases; v2.48.0 released October 16, 2026; confirm your own upgrade window |
What stays free and what you pay for in each open-source CRM
The EspoCRM core is AGPL-3.0 and can be downloaded and self-hosted for free. Paid features arrive as official extensions on top of that core, and the cloud plans bundle them. The Advanced Pack adds reports, business process management and workflows. The Sales Pack adds products, quotes, invoices, purchases, subscriptions, inventory and payments. Other official extensions cover VoIP, Google, Outlook, MailChimp, Zoom and Stripe integrations.
- Advanced Pack scope: reports, BPM and workflows are the features most teams ask about first, so confirm they are needed before you plan a self-hosted build.
- Sales Pack scope: quoting, invoicing and payments may pull in finance review, so ask whether you need them at launch.
- Cloud pricing: the EspoCRM pricing page lists Cloud at 15 US dollars per user per month on Basic (minimum 3 users), 25 on Enterprise (minimum 5) and 69 on Ultimate (minimum 10), with the Advanced Pack included in all cloud plans.
- Self-hosted licensing: extension licensing terms and whether a self-hosted install may use each pack are points to confirm with EspoCRM before purchase.
- Recurring versus one-time: cloud costs recur per user, while self-hosted extension costs and their terms should be read from the current EspoCRM terms.
Before you decide, ask EspoCRM and any partner to confirm which extensions your self-hosted install needs, their licensing and renewal terms, and what updates they include.
The open-source core of Twenty can be self-hosted for free. The paid tiers are Pro, Organization and Enterprise, and the pricing page lists them as follows. Pro is 9 US dollars per user per month. Organization is 19 dollars per user per month and adds row-level permissions, SAML or OIDC SSO and audit logs. Enterprise starts at 50,000 dollars a year and adds single-tenant isolation, IP allow-listing, SCIM provisioning and an SLA. The pricing page says all plans include unlimited custom objects, fields, views and records, plus REST and GraphQL APIs and webhooks.
- Pro tier: 9 US dollars per user per month, per the pricing page.
- Organization tier: 19 US dollars per user per month, adding SSO and audit logs, which matter if identity and audit requirements apply to you.
- Enterprise tier: from 50,000 US dollars a year, adding SCIM provisioning, IP allow-listing and an SLA.
- Core features on every plan: unlimited custom objects and fields and API access, so the free core is not a stripped-down product.
- Self-hosting cost: running the free core still requires your own servers, PostgreSQL, Redis and admin time, and these costs recur.
Before you commit, confirm which plan includes the SSO, audit and provisioning controls your identity team needs, and ask how paid features behave when you self-host versus use Twenty's hosted offering.
SuiteCRM is free to download and self-host under AGPL-3.0 for the SuiteCRM 8 core. SuiteCRM Ltd sells paid services around that software. These include the SuiteASSURED support package, SuiteCRM Hosted, implementation, training and migration services. Most of the money in a SuiteCRM deployment usually goes to services rather than a license fee, so the cost depends on how much of the work you hand over.
- SuiteASSURED: a paid support package from SuiteCRM Ltd, so ask what response and coverage terms it includes.
- SuiteCRM Hosted: a managed option, which moves hosting and operations out of your team.
- Implementation and training: one-time project work that recurs when staff change or new modules are added.
- Migration: a SuiteCRM 7 to 8 move is documented as a migration with its own guide, so budget it as a project, not a patch.
- Partner work: other firms may also implement SuiteCRM, so compare their written scope with SuiteCRM Ltd's offers.
Ask SuiteCRM Ltd or any partner to confirm what support covers, which SuiteCRM release line it applies to, and what a migration from SuiteCRM 7 includes in writing.
Odoo is published under LGPL-3.0 for the Community edition, and the editions page lists the CRM app in both Community and Enterprise. The Community edition is the free, self-hosted option. The Enterprise edition is a commercial product with additional capabilities, and its terms and fees come from Odoo. Odoo 20.0 was released in September 2026, with standard support planned until September 2029. Security updates come only during standard support, so the support window shapes your upgrade budget.
- Community edition: free under LGPL-3.0, with the CRM app included.
- Enterprise edition: commercial, with its own license terms and fees set by Odoo.
- Support window: standard support runs three years after each major release, and security updates depend on it.
- Upgrade effort: plan regular upgrades so you stay inside a supported window, since that work recurs.
- Partner fees: implementation and customization by a partner are one-time or retainer costs outside the license.
Before you choose, confirm which CRM features you need are in Community, and ask Odoo or your partner what Enterprise adds, its license terms and the support you would receive.
What self-hosting each open-source CRM costs your team in effort
Start with the runtime your team will patch every month, because that effort recurs for the life of the system. SuiteCRM 8.10 supports PHP 8.2, 8.3 and 8.4, Apache 2.4, MariaDB 10.6, 10.11, 11.4 and 11.8, and MySQL 8.0 and 8.4 on Linux, Unix or macOS, so someone must keep the host inside that matrix as distributions change. EspoCRM runs on PHP 8.3 to 8.5 with MySQL 8.0 or newer, MariaDB 10.6 or newer, or PostgreSQL 15, and it needs cron or a scheduled task for background jobs, a step that is easy to lose in a handover. Twenty needs a server, a worker, PostgreSQL and Redis, with at least 2 GB of RAM, because insufficient memory can crash processes. Ask which of these components your platform team already runs and which need new monitoring, backups and on-call coverage.
If you run SuiteCRM 7 today, budget the move to SuiteCRM 8 as a separate project from routine upgrades. The SuiteCRM migration guide describes a new SuiteCRM 8 environment, with the 7 instance first brought to 7.14.x or later and its data moved across. Plan a staging instance, full file and database backups, and a review of every customization, since the migration may remove non-core files under public/legacy. Ask any implementer for the inventory of custom code, the test cases run on staging and the rollback path for cutover. Timing also matters: SuiteCRM 7.15 receives security fixes until January 2028, and SuiteCRM has said it expects to name a SuiteCRM 8 extended support release by Q3 2027.
How to choose and pilot an open-source CRM for your team
This sequence moves a team from a shortlist to a tested choice by checking integrations, hosting capacity, licensing, a staging pilot, upgrade and backup behavior, and written partner scope before any commitment.
List required integrations and identity provider
Write down every system the CRM must exchange data with, such as email, calendar, telephony, marketing tools, billing and the data warehouse, and name the identity provider your staff sign in through. Confirm with each vendor which connectors are included in the free core and which come from paid extensions or paid plans, and whether SAML, OIDC or LDAP is supported in the edition you plan to run. Done when you have a signed-off list that marks each integration as free, paid or custom work.
Confirm the hosting stack your team can run
Compare the shortlisted platforms against the database, web server, runtime and cache your team already operates. SuiteCRM and EspoCRM run on PHP with MySQL or MariaDB, while Twenty runs on PostgreSQL and Redis. Check the exact versions in each vendor's compatibility or server configuration documentation, and confirm that your team can patch that stack on your schedule. Done when a named engineer has confirmed the stack in writing and the gaps are listed.
Check license and paid features against workflows
For each workflow on your list, such as reporting, approval flows, quotes, SSO enforcement, row-level permissions or audit logs, identify the license and edition that provides it. Some features sit in paid extensions or paid plans, and some enterprise controls are tied to commercial licenses for specific files. Ask each vendor for the terms in writing and confirm whether the features you need are in the open-source core. Done when every required workflow maps to a free feature, a named paid add-on or a custom build.
Run a pilot on a staging instance
Install the shortlisted candidates on a staging environment in your own infrastructure and load a copy of representative data, including accounts, contacts, custom fields and a sample of historical records. Have two or three real users run the workflows from your integration list end to end. Record what breaks, how long each task takes in the tool, and which customizations need rework. Done when each candidate has a written pilot report that names the failures and open questions.
Test upgrades and backups in the pilot
Practice a full backup and restore of the pilot database and files, then apply a vendor upgrade to the staging copy. For SuiteCRM 7 to 8 moves, follow the vendor's migration path, which is documented as a separate procedure from an in-version upgrade, and review customizations under the public legacy folder before you start. Confirm the release cadence and which release lines receive security fixes for the version you choose. Done when a restore has been verified and an upgrade has completed on staging with the results recorded.
Confirm support and identity configuration on your own environment
Configure the chosen identity method in your own directory or identity provider on staging, and test sign-in, sign-out, group mapping and account provisioning for real user roles. Check the single sign-out behavior your identity provider needs, because some SAML implementations do not end the application session when a user logs out at the provider. Confirm with the vendor which support tier covers your version and your timelines. Done when login, logout and provisioning tests pass and the support terms are in writing.
Collect written quotes from partners against a written scope
Send the same written scope to each implementation partner, covering the chosen platform, the integrations and identity work from step one, the migration or data load, the customizations, documentation and handover, and the upgrade and backup routine you tested. Ask each partner to state what is one-time (setup, integration build, data migration, training) and what recurs (hosting, support retainer, upgrades, extension licenses). DeployOpen works from fixed scope agreed in writing and does not publish a price list. Done when you hold comparable written quotes that map to the same scope and you can explain each cost line.
How customization and integration differ across the four options
The four options extend differently: Twenty defines objects in code, EspoCRM builds them in the admin interface with Formula Script, and SuiteCRM relies on its own customization path with migration risk. Identity and API support also vary by release and tier, so each card names the condition that makes the difference matter and what to test before committing.
Custom objects and fields
Twenty supports custom objects and fields defined as code, so changes can live in version control and move through review. EspoCRM uses the Entity Manager for fields and entities, with Formula Script in before-save scripts, workflows and BPM. This matters most when several administrators change the data model. In a proof of concept, make one schema change in each product, export it, and confirm that a second environment can reproduce it without manual clicks.
SuiteCRM customization and migration risk
SuiteCRM customizations need to be reviewed on every move, because the SuiteCRM 7 to 8 migration is documented as a new environment with data moved into it, not an in-place upgrade. The migration docs warn that the process may remove non-core files under the public/legacy folder. If your team has custom code there, plan to rebuild it on a staging instance and test it before any cutover, and budget that work in the scope you agree in writing.
SuiteCRM SAML logout limits
SuiteCRM 8 can sign users in through LDAP or SAML. From 8.7.0, its SAML implementation does not support IdP-initiated logout or POST binding to the logout service, so ending a session at the identity provider leaves the SuiteCRM session open. This matters for shared workstations and for any policy that requires session termination on sign-out. Verify the logout path in a test tenant before you rely on SAML alone for session control.
EspoCRM OIDC and the 2FA conflict
EspoCRM supports OpenID Connect since version 7.3, with optional user creation on first login, group-to-team mapping and backchannel logout. Its own two-factor authentication is not compatible with OIDC, so the identity provider must enforce MFA for every sign-in. This matters for teams that want central MFA policy. In a proof of concept, confirm that group mapping assigns the right teams and that the fallback login method is restricted to a small set of administrators.
Twenty SSO and SCIM tiers
Twenty's open-source core can be self-hosted for free, but SSO, row-level permissions and audit logs are listed for the Organization and Enterprise plans, and SCIM provisioning and IP allow-listing for Enterprise. Teams that need automated joiner and leaver handling should price the tier before choosing the product. Ask Twenty to confirm in writing which SSO protocols and provisioning features each plan includes for your deployment model.
API authentication and GraphQL
EspoCRM's REST API supports API key, HMAC and basic authentication through dedicated API users with role-based permissions. The docs describe HMAC as the most secure option and basic authentication as not recommended. Twenty exposes both GraphQL and REST APIs, with webhooks included on all plans. This matters when integrations are built by a separate team. Test the service account model, token rotation and permission scope for each integration before you write production code against either API.
What buyers ask before choosing an open-source CRM
Is the free self-hosted core enough for a regulated team?
The free core is enough to run the CRM, but it is rarely the whole cost. SuiteCRM, EspoCRM and Twenty each publish a free, self-hostable edition under an open-source license, so license cost is zero for the software itself. What the core may not include is the identity, audit and permission features your controls need. Twenty lists SSO, row-level permissions and audit logs on its paid Organization and Enterprise plans, and EspoCRM sells reports, workflows and sales modules as paid extensions. Map each control your assessment requires to a specific feature, then confirm in the vendor's current documentation which edition includes it.
How much self-hosting effort does each stack need?
Effort follows the stack your team already runs. SuiteCRM and EspoCRM are PHP applications on MySQL or MariaDB, so a team with PHP and MySQL operations skills has the closest match. Twenty is a TypeScript application that runs a server, a worker, PostgreSQL and Redis, and its Docker Compose guide asks for at least 2 GB of RAM. Each extra service adds patching, backup and monitoring work. Odoo adds its own framework and release cycle. Ask any implementation partner to price the work against your current platform skills, not a generic install.
How long does a migration from SuiteCRM 7 to 8 take?
No supplied figure gives a duration, so treat any number you hear as unverified. The SuiteCRM documentation treats the move as a migration, not an in-place upgrade: you set up a new SuiteCRM 8 environment and move SuiteCRM 7 data into it, after bringing the 7 instance to the latest 7.14.x or later. The main drivers are the volume of data, the number of custom modules and workflows to rebuild, integrations, and how many non-core files under the public/legacy folder you rely on. Ask for a written plan that includes a staging run, backup steps and a list of customizations to review.
Can our own team run the CRM without outside help?
A team with the right platform skills can run any of these CRMs without outside help, but the work is continuous. Plan for installs, upgrades, backups, certificate renewal, background job scheduling and security patching. SuiteCRM 8 minor releases arrive roughly every eight weeks, and patch releases contain only security and bug fixes. EspoCRM needs cron or a scheduled task for background jobs. Be realistic about who will own these tasks after launch, and who covers absences. If that ownership is unclear, the gap is the signal to bring in outside help.
When should we hire a consultant for a CRM rollout?
Hire a consultant when the rollout touches controls you must prove, or when your team lacks the stack skills for the platform you choose. Typical triggers include SSO and provisioning design, custom objects and workflows that affect sales or customer records, a SuiteCRM 7 to 8 migration, and evidence collection for a compliance assessment. Outside help does not replace your ownership of the system. DeployOpen plans, implements, customizes, integrates, hardens, backs up, upgrades and documents self-hosted open-source platforms inside your own infrastructure, and most engagements are fixed-scope.
What should we ask for in a written scope?
A written scope should name the platform and version, the hosting environment, and each deliverable with its acceptance test. Ask for the identity integration to be specified (for example, SAML, OIDC or LDAP, and which edition supports it), the data migration method and rollback plan, the customizations and integrations in scope, and the documentation and training handed over. Also ask what is excluded, who supplies licenses for any paid extension, and how post-launch support and upgrades are billed. Ask for timelines and fees in the quote itself, since no supplied figure sets them.
How does the Odoo support window affect planning?
The Odoo support window sets how long you can rely on security updates without a major upgrade. Odoo 20.0 was released in September 2026, with standard support planned until September 2029. Odoo provides standard support for three years after each major release, and security updates only during that window. When you pick Odoo, schedule the next major upgrade inside the window, and budget the testing of custom modules, because each upgrade touches them. Confirm the exact dates and the Community versus Enterprise coverage in Odoo's support documentation before you commit.
How DeployOpen helps you select and implement an open-source CRM
DeployOpen plans, implements, customizes, integrates, hardens, documents and supports self-hosted open-source platforms inside your own infrastructure, including your cloud accounts, data centers or air-gapped networks. We start from your team's stack, identity provider and compliance needs, then turn the shortlist into a written scope for the CRM you choose.
How we scope
- Map your existing PHP, MySQL or MariaDB, PostgreSQL and Redis skills against the candidate CRMs before choosing one.
- Confirm which identity method you need, such as SAML, LDAP or OIDC, and which plan or edition it requires.
- Agree in writing which extensions, integrations and data migrations are in scope, and which ones you will confirm with the vendor first.
How we build
- Install the chosen CRM in your environment and configure authentication, roles and permissions to match your teams.
- Build the custom fields, workflows, integrations and extensions defined in the written scope, testing each on a staging instance first.
- Review customizations against each vendor's upgrade and migration guidance so later version changes stay manageable.
How we hand over
- Document the architecture, configuration, backup and restore steps, and the upgrade path for your administrators.
- Deliver test results, configuration records and runbooks so your team can operate the system without us.
- Walk your administrators through the handover, with knowledge transfer scheduled as part of the fixed-scope deliverables.
How we support
- Offer ongoing support, upgrades and continuous testing as a retainer after handover, agreed separately from the initial scope.
- Track vendor release lines and security updates so you know when a patch, upgrade or migration needs planning.
- Ask for a quote built from your written scope, including licensing, paid extensions and the effort each component requires.

