Přeskočit obsah

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

  1. Otevřít https://entra.microsoft.com
  2. Identity → Applications → App registrations → + New registration
  3. Vyplnit:
  4. Name: Twenty CRM
  5. Supported account types: Accounts in this organizational directory only (Single tenant)
  6. Redirect URI (Web):
    https://crm.sofie.education/auth/microsoft/redirect
    
  7. Kliknout Register

Krok 2 — Druhý Redirect URI

  1. V nově vytvořené aplikaci → Authentication
  2. + Add URI a přidat:
    https://crm.sofie.education/auth/microsoft-apis/get-access-token
    
  3. Save

Krok 3 — Client Secret

  1. Certificates & secrets → + New client secret
  2. Description: twenty-crm
  3. Expires: 24 months
  4. Addihned 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

  1. API permissions → + Add a permission → Microsoft Graph → Delegated permissions
  2. Zaškrtnout:
  3. openid
  4. email
  5. profile
  6. offline_access
  7. User.Read
  8. Mail.ReadWrite
  9. Mail.Send
  10. Calendars.Read
  11. Add permissions
  12. 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

  1. Otevřít https://admin.exchange.microsoft.com
  2. Recipients → Mailboxes → vybrat účet crm@zs-sofie.cz
  3. 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čí:

cd /data && docker compose up -d twenty twenty-worker

Pak restartovat:

cd /data && docker compose up -d twenty twenty-worker

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.