Twenty CRM + Microsoft 365 — návod pro schůzku (2026-03-20)
Cíl: Napojit Twenty CRM (crm.sofie.education) na Microsoft 365 — SSO přihlášení, synchronizace emailů/kalendáře a servisní emaily (reset hesla, pozvánky).
Potřebujeme: Přístup admina do Azure portálu (Entra ID) + Exchange Admin Center pro doménu školy.
Krok 1 — Nová App Registration
- Otevřít https://entra.microsoft.com
- Identity → Applications → App registrations → + New registration
- Vyplnit:
- Name:
Twenty CRM - Supported account types: Accounts in this organizational directory only (Single tenant)
- Redirect URI (Web):
- Kliknout Register
Krok 2 — Druhý Redirect URI
- V nově vytvořené aplikaci → Authentication
- + Add URI a přidat:
- Save
Krok 3 — Client Secret
- Certificates & secrets → + New client secret
- Description:
twenty-crm - Expires: 24 months
- Add → ihned zkopírovat Value (zobrazí se jen jednou!)
Zapsat si: - Client ID (ze stránky Overview → Application (client) ID) - Client Secret (právě vytvořený)
Krok 4 — API Permissions
- API permissions → + Add a permission → Microsoft Graph → Delegated permissions
- Zaškrtnout:
openidemailprofileoffline_accessUser.ReadMail.ReadWriteMail.SendCalendars.Read- Add permissions
- Kliknout Grant admin consent for [organizace] → potvrdit Yes
Krok 5 — Ověření
Zkontrolovat, že u všech permissions svítí zelená fajfka "Granted for [organizace]".
SMTP — servisní emaily (reset hesla, pozvánky, notifikace)
Twenty aktuálně nemá nastavený SMTP — nemůže posílat žádné servisní emaily. Použijeme SMTP relay přes M365.
Krok 6 — Povolit SMTP AUTH v Exchange Admin
- Otevřít https://admin.exchange.microsoft.com
- Recipients → Mailboxes → vybrat účet
crm@zs-sofie.cz - V novějším Exchange Admin Center přepínač SMTP AUTH chybí v UI — je nutné použít PowerShell:
# Na Windows otevřít PowerShell, na macOS: brew install powershell && pwsh
Install-Module ExchangeOnlineManagement
Connect-ExchangeOnline
Set-CASMailbox -Identity "crm@zs-sofie.cz" -SmtpClientAuthenticationDisabled $false
Po schůzce (technická část — Docek)
✅ Hotovo — konfigurace je v infra/docker-compose.yml, credentials v infra/.env (proměnné AUTH_MICROSOFT_CLIENT_ID, AUTH_MICROSOFT_CLIENT_SECRET, SMTP_PASS).
Na VM stačí:
Pak restartovat:
Známé problémy
- Refresh token bug (#18550): Na self-hosted Twenty může po ~1h přestat fungovat sync. Řešení: upgrade Twenty na nejnovější verzi.
- First consent race condition (#18405): Při prvním přihlášení může Azure hodit chybu — stačí to zkusit znovu.