Microsoft Teams vs Matrix and Element: when each option fits
A renewal, a licensing change or a data residency requirement is usually what puts Microsoft Teams chat and meetings under review. Teams fits organizations already running Microsoft 365 that want chat, meetings and files in one vendor-managed suite, with identity, administration and support handled by Microsoft. Matrix with Element fits organizations that need self-hosted chat and calls on infrastructure they control, and that are willing to operate the servers, identity links and media services themselves. The two are not interchangeable in day-to-day use: Matrix uses spaces and rooms where Teams uses teams and channels, so users and administrators will notice the difference on the first day.
Start with identity. Teams sign-in is tied to Microsoft Entra ID and the rest of Microsoft 365. Synapse, the Matrix homeserver most often deployed with Element, supports single sign-on through OpenID Connect (oidc_providers), SAML2 (saml2_config) and CAS, so you can connect an existing directory, but you must build and test that link yourself. Confirm which identity provider your organization standardizes on, how group membership will map to room access, and whether you need a separate authentication service in front of the homeserver. Meeting scale is the second question. Element Call relies on MatrixRTC for signaling and a LiveKit selective forwarding unit for media, which needs its own server plus the lk-jwt-service authorization service alongside the homeserver. Ask the vendor or your architect for tested participant counts and sizing for your meeting profile before you compare it with Teams meetings.
The third question is operating staff. A self-hosted Synapse deployment normally runs on PostgreSQL, with Redis if you scale out with workers, and the upgrade notes warn that rolling back can be difficult because of database schema changes. Someone must own upgrades, backups, federation settings and the LiveKit media path, and that cost recurs every year. Finally, decide whether you need Element's commercial editions. Element Server Suite Community, which includes Synapse and Element Call under AGPL, is the free option, but Element positions ESS Community for non-professional use and evaluations. Confirm with Element which edition covers production use, support terms and any Pro or Sovereign features your compliance or air-gap requirements depend on before you commit.
Which option fits which scenario
This table matches common Microsoft Teams replacement scenarios to the better fit between Matrix with Element and the alternatives. Read each row for the reason and for the condition under which Matrix becomes the stronger choice. Treat it as a starting point for a scoped evaluation, not a final decision.
| Scenario | Better fit | Reason and when Matrix is stronger |
|---|---|---|
| Heavy Outlook and SharePoint use inside Microsoft 365 | Mattermost or Rocket.Chat | Chat is only one part of the workflow. Matrix gives strong chat and calls, but links into Outlook and SharePoint need custom work. Matrix is stronger when chat and calls must run without any Microsoft 365 dependency. |
| Data residency or sovereignty mandate | Matrix with Element, or openDesk | A self-hosted Matrix server keeps message and call data in the organization's own infrastructure. Matrix is the stronger choice when federation with partner organizations is required and the mandate allows it. |
| One team needs chat and meetings together | Matrix with Element and Element Call | Element Call runs over a self-hosted LiveKit server and can embed in Element. Confirm participant scale and recording needs with your own load tests before committing. |
| Evaluation or pilot | Mattermost Team Edition or Rocket.Chat Starter | Both have free self-managed tiers suited to trials. Element Community ESS is positioned for non-professional use and evaluations, so a production rollout needs a paid tier or a confirmed license review. |
| Air-gapped network | Element Server Suite Sovereign or Mattermost Enterprise Advanced | Matrix is a fit here when the Sovereign edition is licensed and the air-gapped update process is planned. Confirm offline update and mobile push handling with the vendor. |
| Need for SSO through an existing identity provider | Matrix with Element, using OIDC, SAML or CAS in Synapse | Synapse supports OpenID Connect, SAML2 and CAS. Matrix is the stronger choice when the identity provider already speaks one of these and the team can maintain the Synapse configuration. |
| Small team with minimal operations staff | Mattermost Team Edition | Mattermost is a simpler single-server deployment for teams under 250 users without SSO needs. Matrix needs more components, including Synapse, PostgreSQL and LiveKit, so it is better suited to teams with platform engineering capacity. |
How Element Call and Synapse fit together
A self-hosted Matrix deployment for chat and meetings is several services, not one. The Synapse homeserver holds accounts, rooms and message history, and it needs PostgreSQL as its database for production; the Synapse documentation recommends PostgreSQL over SQLite for that role. Clients are Element Web or Element X, and Element Call adds video. Element Call uses MatrixRTC for call signaling, with a LiveKit selective forwarding unit carrying the media, and lk-jwt-service issues the authorization that lets a Matrix user join a LiveKit room. Plan for all of these pieces, plus the reverse proxy and TLS in front of them. If you scale Synapse with worker processes, Redis relays replication between the main process and the workers, so it becomes another service to back up and monitor.
Decide the homeserver name before anyone has an account. The server_name setting fixes how user IDs such as @user:example.com and room IDs are formed. Changing it later is effectively a migration, because existing identities keep the old domain. Confirm the domain, the delegation records and the federation posture with your team before the pilot: the federation_domain_whitelist setting can restrict federation to listed domains or disable it entirely, and the Synapse federation documentation covers the port and delegation details. Element Call also needs a publicly reachable endpoint for its media path, so network and firewall design belongs in the plan, not after it.
Licensing is the other decision to settle early. Element Call is licensed AGPL-3.0, with an Element Commercial License as the alternative, and Synapse is AGPL-3.0 with commercial licenses also available from Element. Your legal and procurement teams should confirm whether AGPL obligations fit your use, including what they require if you modify and offer the software to users over a network. Element Server Suite packages Synapse and Element Call in a free Community edition, with paid Pro and Sovereign editions described on the Element pricing page. Ask the vendor which edition covers support, the components you need and any air-gapped requirement before you commit.
Where data sits and who controls identity
Moving chat and calls from Microsoft Teams to Matrix and Element changes three things at once: where message data is stored, who operates the servers, and which identity system decides who can sign in. The four cards below cover those decisions and the compliance questions they raise, which the organization must evaluate with its own auditor.
Data location on your servers
With a self-hosted Synapse homeserver, message events, media and user records sit in the PostgreSQL database and media store that you provision, in the data center or cloud account you choose. Teams data sits in Microsoft's cloud under its own data boundary terms, so the move changes the custodian and the jurisdiction of every record. Confirm where backups, replicas and log files are written, because those copies often matter more to an auditor than the primary database.
Hosting model options
Three models are realistic: your own team runs Synapse, Element Call and the LiveKit server, Element Server Suite Community (free, AGPL, positioned for non-professional use and evaluations) is used for trials, or Element Server Suite Pro or Sovereign is licensed for production or air-gapped use. A partner-run deployment moves operations to a third party under a contract. Ask Element which edition fits your production and support needs, and ask any partner who holds administrative access to your keys and backups.
Identity through upstream providers
Synapse can delegate sign-in to an OpenID Connect provider, a SAML2 provider through pysaml2, or CAS. Microsoft Entra ID can act as an OIDC or SAML source, so Teams users may keep their directory accounts, but Microsoft 365 licensing no longer controls chat access and group membership must be rebuilt as Matrix spaces, rooms and power levels. Plan the deprovisioning path too: a disabled directory account does not automatically end existing Matrix sessions unless your identity configuration handles it.
Compliance evidence and audit scope
Self-hosting moves controls for access logging, encryption, retention, backup and incident response onto your team, and each one needs evidence an auditor can inspect. DeployOpen prepares systems, controls and evidence for assessments but does not issue audit reports or certifications, and independent auditors decide what satisfies a given framework. Before cutover, ask your auditor which Microsoft 365 controls you inherit today, which you must replace, and how Matrix federation settings will be documented as part of scope.
ESS Community, ESS Pro and what each one covers
ESS Community is the free, AGPL-licensed edition of Element Server Suite. It packages Synapse and Element Call, which means a self-hosted Matrix homeserver with a native video application can be stood up without a license fee. Element positions this edition for non-professional use and evaluations, so the terms on its pricing page should be read before it is used for a production chat system that staff depend on.
- Included components: Synapse and Element Call under AGPL, with the LiveKit media server and authorization service deployed alongside them.
- Licensing: AGPL obligations apply to modifications you distribute or offer as a network service, so review them with counsel before customizing the code.
- Support: Community use carries no vendor support commitment, so incidents rely on your own staff and public documentation.
- Upgrades: Your team applies Synapse upgrades and reads the upgrade notes, since rolling back can be difficult.
- Intended use: Element describes this edition for non-professional use and evaluations, so ask whether production use requires a paid edition.
Confirm the current feature list, the non-professional use wording and the support terms with Element on its pricing page before deciding.
ESS Pro is the paid edition of Element Server Suite. It includes Synapse Pro, Element's commercial build of the homeserver, so organizations that need a commercial license or vendor-backed support have a defined path. The fee and the included services are set by Element, and neither is stated in this page, so the quote is the source for them.
- Included components: Synapse Pro in place of the AGPL Synapse build, with the rest of the suite supplied under the Pro terms.
- Licensing: A commercial license removes AGPL obligations for organizations that cannot comply with them.
- Support: Ask Element which support levels, response expectations and upgrade channels are included.
- Cost drivers: Expect the license fee to recur annually or per the agreed term, while hosting and staff effort stay with you.
- Migration: Moving from Community to Pro is a licensing decision, so confirm whether the same data and configuration carry over without rebuilding.
Ask Element for a written quote and a current feature comparison against the Community edition before committing.
The Sovereign edition of Element Server Suite targets air-gapped deployments, where the servers have no path to external update or licensing services. It is aimed at defense, critical infrastructure and research networks that need the full stack to run on isolated infrastructure. Its scope and delivery method differ from the connected editions, so the offline update process needs to be understood before procurement.
- Deployment model: Designed for networks with no internet connection, which changes how software, container images and security patches reach the servers.
- Updates: Establish how new releases are delivered into the enclave, how they are verified and who approves them.
- Licensing and activation: Confirm how licenses are validated when the network has no outbound connection.
- Scope: Confirm whether Element Call, LiveKit and the authorization service are included in the Sovereign package.
- Operations: Plan for offline backups, certificate management and identity integration inside the enclave.
Confirm the Sovereign package contents, offline update procedure and support terms with Element before scoping an air-gapped project.
What a self-hosted Matrix stack costs to run
Moving from Teams to Matrix changes where the money goes more than whether it is spent. Teams costs now sit in a separate chat license, while the Element side shifts cost to hosting, media capacity, and the people who operate the stack. The cards below separate one-time work from recurring spend and list what to ask for in a written quote.
Teams licensing after unbundling
Teams is no longer guaranteed inside a Microsoft 365 suite for new buyers, so chat becomes its own line item on the Microsoft bill. Check which suite or standalone Teams offering your organization holds and whether any Teams license stays active during the migration window. Ask whether the Teams license must remain active for Graph export, since the Export APIs require an active Teams license on the exported users. Recurring Teams fees end only when the last user is removed from the license.
Server hosting and database
The homeserver is usually the largest recurring infrastructure line. Synapse runs on PostgreSQL in production, and the database, backups and any Redis used for workers each need compute and storage. Ask your partner or cloud team which hosting model they will price, and whether the quote covers high availability, failover and disaster recovery testing. Hosting costs rise with user count, message volume and federation traffic.
Element Call media capacity
Element Call media runs on a LiveKit server, and the lk-jwt-service authorization service sits beside the homeserver. Media is the cost that scales with concurrent calls and participants, not with message count, so size it for peak meeting load. Ask for bandwidth and compute assumptions per concurrent participant, the TURN relay setup for users behind restrictive networks, and how the quote changes when meeting use grows.
Element subscription decision
Element Server Suite has a free Community edition that includes Synapse and Element Call under AGPL, and a paid Pro edition with Synapse Pro. Element positions ESS Community for non-professional use and evaluations, so a production organization should confirm its licensing position in writing before going live. Ask whether support, upgrade assistance and commercial licensing for AGPL exceptions are in scope, and what the subscription renews on.
Staff for upgrades and monitoring
Operating Synapse means applying upgrades, watching database growth, and reviewing federation and abuse settings. Synapse upgrade notes warn that rolling back can be hard because schema changes ship between releases, so upgrades need a tested runbook and a staged environment. Ask who owns on-call, who patches Python and PostgreSQL when upstream versions reach end of life, and whether the quote includes these tasks or only the initial build.
Migration labor and cutover
Migration is mostly one-time effort: extracting Teams history through Microsoft Graph, mapping teams and channels to spaces and rooms, configuring single sign-on, and running a parallel period. Ask for a fixed-scope statement that names the export volume, the number of spaces and rooms, the identity provider work, and the user training included. Migration costs rise with history volume and the number of custom integrations that must be rebuilt.
How a move from Teams to Matrix and Element proceeds
The sequence turns an undocumented Teams estate into a tested Matrix deployment with identity, migrated history and a supervised cutover, with each phase closing on a recorded decision.
Inventory teams, channels, meetings and integrations
The project owner and Teams administrators list every team, channel, private channel, meeting series, recording store, guest account and connected app, and record who owns each one. They also note which content must be kept for legal or records reasons and which can be left behind. The step is done when the inventory is signed off by the business owners of each group, and each item has a keep, migrate or retire decision.
Build a pilot on a non-production homeserver
The platform team deploys a non-production Synapse homeserver with PostgreSQL, Element Web, and Element Call with its LiveKit server and lk-jwt-service, following the upgrade and configuration documentation for the release chosen. Pilot users test chat, calls, notifications and mobile clients with real workflows. The step closes when pilot sign-off confirms the functions the business needs and lists the gaps that must be accepted or worked around.
Wire identity to the existing provider
The identity team connects Synapse to the existing directory through OpenID Connect, SAML2 or CAS, as the chosen provider supports, and sets the server_name value, which fixes how user IDs are formed and cannot be changed casually later. They decide whether federation is needed and, if not, restrict it with federation_domain_whitelist and firewall the federation listener. The step is done when test accounts from each user group sign in, provisioning and deprovisioning behave as designed, and the server_name decision is recorded.
Map teams and channels to spaces and rooms
The project team turns the approved inventory into a room design: which teams become spaces, which channels become rooms, who holds administrator power levels, and how private channels and guest access are represented. Because Matrix and Teams organize membership differently, each mapping rule is written down and tested on a sample set in the pilot. The step is done when the mapping document is approved and the pilot rooms match it.
Extract history through the Microsoft Graph Teams Export APIs
A Microsoft 365 administrator approves the application permissions that the Teams Export APIs in Microsoft Graph require, and confirms that each user whose content is exported holds an active Teams license, since the APIs depend on it. The team then exports 1:1, group, meeting and channel messages and recording or transcript links, and checks the export for completeness against the inventory. The step is done when a count-based reconciliation shows every in-scope conversation was exported, with exceptions logged for the owners to decide.
Import history and rehearse cutover
Engineers load the converted history into the pilot homeserver, check that rooms, membership and timestamps are correct, and run a full rehearsal of the cutover on a copy of the production configuration. Rollback can be difficult after Synapse database schema changes, so the team records a backup point before each upgrade and decides in advance whether a return to Teams is possible for each phase. The step is done when the rehearsal runs end to end and the rollback position is documented and accepted by the owners.
Cut over users and communicate
The organization moves users in controlled waves, updates the Teams channel retention and posting guidance, and publishes the client install and sign-in steps to users. Support staff watch for sign-in failures, notification gaps and call quality issues, and the migration team keeps the Teams tenant read-only for content that is no longer active. The step is done when every planned wave has passed its checks and the open issue list has an owner for each item.
Decommission Teams and retain evidence
After the agreed observation period, the organization removes Teams licenses that are no longer needed, disables the export applications and permissions that are no longer required, and archives the export files and migration logs under its retention policy. Where the chosen licensing or the Teams contract affects the exit, the procurement team confirms the terms in writing. The step is done when the decommissioning checklist is signed, access reviews show no lingering export permissions, and the evidence pack is stored.
Questions buyers ask before choosing Matrix and Element
What does a self-hosted Matrix deployment cost to run, and what drives that cost?
Running Matrix yourself has no license fee for the core server, but it has real costs: the servers and storage, the PostgreSQL database, Redis if you scale with workers, the LiveKit media servers for calls, backups, and the staff who operate them. Synapse is AGPL-3.0, so the software itself is free to use, while Element's commercial Synapse Pro and the paid Element Server Suite Pro and Sovereign editions carry license fees. The main cost drivers are user count, call volume and meeting size, message history retention, the number of federated links you keep, and how much on-call support you need. Ask any implementation partner for a quote that separates one-time setup from recurring hosting, licensing and support, and confirm with Element which edition you need for your support model.
How long does a migration from Teams to Matrix take, and what sets the timing?
Timing depends on scope more than on the software. The main variables are how much Teams history you must keep, how many teams and channels map to Matrix spaces and rooms, how many users need single sign-on, whether video meetings move at the same time as chat, and how much time users need to adjust. History extraction depends on the Microsoft Graph Teams Export APIs, which need admin-approved application permissions and an active Teams license on each exported user, so confirm those approvals early. Because Matrix has no direct Teams importer, the timeline also includes building the conversion step. A fixed-scope written agreement with clear deliverables is the best way to set a date, and DeployOpen does not publish a fixed duration for this work.
What skills does the team need, and can we run this in-house?
Plan for skills in Linux operations, PostgreSQL administration, reverse proxies and DNS, identity integration with OIDC, SAML or CAS, Kubernetes or container operations if you use them, and an on-call process for chat and calls. Synapse also needs careful handling of upgrades, because rolling back can be difficult after database schema changes. Teams with strong platform engineering can run it internally after a documented handover. Teams without that depth often use a partner for the initial build, hardening and runbooks, then keep operations in-house or on a retainer. Ask any partner to confirm which tasks it will hand over and which it will support after go-live.
Can Element Call handle the meeting sizes we need?
Element Call uses MatrixRTC for signaling and a LiveKit selective forwarding unit for media, and the project says this design supports large meetings. Self-hosting it requires a LiveKit server and the lk-jwt-service authorization service alongside your homeserver. Practical capacity depends on your media server sizing, network bandwidth, the number of simultaneous calls, and whether participants use video. Test with your own largest expected meeting before cutover, and compare the results with your Teams meeting patterns, including recording, dial-in and calendar invites, which need separate verification. Confirm each of these with the Element Call documentation and your test results rather than relying on general claims.
Is ESS Community allowed for production use?
Element positions ESS Community for non-professional use and evaluations, so it is not the default choice for a production business deployment. The Element Server Suite Pro edition, which includes Synapse Pro, and the Sovereign edition for air-gapped networks are the paid options for organizations that need production terms. Check the current terms on Element's pricing page and get written confirmation of permitted use from Element before you deploy, because your license obligations depend on how you use the software. Your legal and procurement team should review this as part of the decision.
How are upgrades handled, and what happens with Python and PostgreSQL version changes?
Synapse 1.143.0 and later require PostgreSQL 14 or newer, and 1.142.0 and later require Python 3.10 or newer. The Synapse upgrade notes warn that rolling back can be difficult because of database schema changes between releases, and Synapse drops support for Python and PostgreSQL versions once they reach upstream end of life. Plan a staging environment, a tested database backup before every upgrade, and a documented upgrade order for the homeserver, workers and Element Call components. Track the Synapse releases page and upgrade notes for each version, and agree in writing who performs upgrades and how often.
Does Matrix support the single sign-on we already use?
Synapse supports single sign-on through OpenID Connect providers configured under oidc_providers, through SAML2 using saml2_config with pysaml2, and through CAS. Check that your identity provider supports one of these protocols and that your user attributes map cleanly to Matrix user IDs. Test login, account provisioning and deprovisioning with your identity team before cutover, because removing access for departing staff is a security requirement, not an optional step.
Official sources to read before deciding
Start with the Element Call repository, because it is the only source that settles how the meeting side works. Read it for the MatrixRTC signaling model, the LiveKit selective forwarding unit that carries media, and the lk-jwt-service authorization service you must run next to the homeserver. Its licensing (AGPL-3.0 with a commercial alternative) also decides whether your legal team needs to review the stack. Confirm the participant counts and recording behavior you need against the project's own documentation and a test deployment, not against the generic claim that it supports large meetings.
Read the *Synapse* documentation for the homeserver decisions: the server_name setting, federation on port 8448 or delegated port 443, federation_domain_whitelist, and the oidc_providers, saml2_config and CAS options that govern single sign-on. Pair it with the upgrade notes, which warn that rolling back can be hard because of schema changes and that PostgreSQL and Python support follows upstream end-of-life. The Element Server Suite page and the Element pricing page describe the Community, Pro and Sovereign editions, but they describe packaging, not operations. Ask Element in writing which edition includes the components you plan to run and which support terms apply.
Use the Matrix.org ecosystem listings to compare homeserver options (Synapse, Dendrite, Conduit and its forks) and to find bridges that connect Matrix rooms to other platforms during a phased cutover. Listings are not endorsements, so check each project's license, maintenance activity and release history yourself. Finally, read the Microsoft Teams Export API documentation before you commit to a migration plan. It defines which chat, meeting and transcript content can be retrieved, the admin-approved application permissions required, and the Teams license each exported user must hold. Confirm those requirements with your Microsoft 365 administrator, since they determine whether historical content can reach the new server at all.

