So konfigurierst du die Salesforce-Integration

:bookmark: Dieser Leitfaden behandelt die Konfigurationsschritte, die erforderlich sind, um Discourse mit Salesforce über das Plugin Discourse Salesforce zu verbinden.

:discourse: Discourse Salesforce ist im Enterprise-Plan verfügbar.

:person_raising_hand: Erforderliche Benutzerstufe: Administrator

Schritt 0: Die richtigen Personen in Ihrer Organisation finden

Bevor Sie etwas in Discourse tun, stellen Sie zunächst sicher, dass Sie wissen, welche Personen aus Ihrer Organisation eingebunden werden müssen, um die Anforderungen auf der Salesforce-Seite zu erfüllen.

Salesforce-Administrator

Wer ist das: In den meisten Organisationen ist dies typischerweise die Person, die Ihr Team als „den Salesforce-Admin“ bezeichnet — die Person, die die Konfiguration Ihrer Salesforce-Organisation verwaltet, nicht unbedingt Ihr IT-Systemadministrator.

Was sie tun: Übernimmt die initiale Einrichtung auf der Salesforce-Seite, indem die External Client App (oder Connected App) in den Salesforce-Setup-Einstellungen erstellt, die OAuth-Einstellungen konfiguriert und der Consumer Key sowie das Consumer Secret abgerufen werden.

Was sie brauchen: Zugriff auf den Salesforce-Setup-Bereich und insbesondere den External Client App Manager. In Salesforce erfordert dies die Systemberechtigung Customize Application. Diese ist im Standard-Profil System Administrator enthalten. Wenn die Person, die die Einrichtung durchführt, kein System Administrator-Profil hat, muss ein Salesforce-Administrator ihr ein Berechtigungsset zuweisen, das „Customize Application“ enthält.

Salesforce-Integrationsbenutzer

Wer ist das: Ein Salesforce-Benutzer, dessen Kontozugangsdaten vom Discourse-Plugin verwendet werden, um API-Aufrufe an Salesforce durchzuführen.

Was sie tun: Stellt den Benutzernamen bereit, der in die Einstellung salesforce username in den Discourse-Salesforce-Einstellungen eingetragen wird, um alle API-Aufrufe von Discourse an Salesforce zu ermöglichen.

Was sie brauchen: Dieser Benutzer muss folgende Berechtigungen haben:

Berechtigung Warum sie erforderlich ist
API Enabled Erforderlich für jeglichen Salesforce-API-Zugriff
Erstellen, Lesen, Bearbeiten von Leads Erstellt und verknüpft Leads von Discourse-Benutzern
Erstellen, Lesen, Bearbeiten von Kontakten Erstellt und verknüpft Kontakte von Discourse-Benutzern
Erstellen, Lesen, Bearbeiten von Fällen (Cases) Erstellt Fälle aus Discourse-Themen
Erstellen von Fallkommentaren (Case Comments) Synchronisiert Themenantworten als Fallkommentare
Erstellen von FeedItem (Chatter) Veröffentlicht Themenaktivitäten in Chatter

Hinweis: Der Salesforce-Integrationsbenutzer kann dieselbe Person wie der Salesforce-Administrator sein. Als Sicherheitsbest-Praxis empfehlen wir jedoch die Verwendung eines separaten, mit engeren Berechtigungen ausgestatteten Kontos für den Integrationsbenutzer.

Schritt 1: Zertifikat und privaten Schlüssel generieren

Rolle: Discourse-Administrator

Discourse Salesforce verwendet den JWT Bearer Flow zur Authentifizierung bei Salesforce. Dafür wird ein RSA-Schlüsselpaar benötigt: ein öffentliches Zertifikat, das Salesforce zur Überprüfung der Plugin-Identität verwendet, und ein privater Schlüssel, den Discourse zur Signierung seiner Anfragen verwendet.

  1. Folgen Sie diesen Anweisungen, um das Schlüsselpaar zu generieren:
    • server.crt - ein öffentliches Zertifikat, das belegt, dass Discourse die autorisierte App ist
    • server.key - ein privater Schlüssel, der die Discourse-API-Anfragen an Salesforce signiert
  2. Senden Sie die Datei server.crt an Ihren Salesforce-Administrator, damit er sie in Schritt 3 hochladen kann.
  3. Bewahren Sie die Datei server.key auf, um sie in Schritt 5 in die Discourse-Salesforce-Einstellungen einzufügen.

Schritt 2: Die External Client App in Salesforce erstellen

Rolle: Salesforce-Administrator

  1. Melden Sie sich bei Salesforce an.

  2. Klicken Sie oben rechts auf das Zahnrad-Symbol (:gear:) und wählen Sie Setup.

  3. Suchen Sie im Quick-Find-Feld nach External Client App Manager und wählen Sie es aus.

  4. Klicken Sie auf New External Client App.

Hinweis: Diese Schritte verwenden den External Client App Manager, der in Salesforce Spring '25 eingeführt wurde. Wenn Ihre Organisation eine ältere Version nutzt, wird in der Oberfläche möglicherweise stattdessen App Manager oder Connected Apps angezeigt — die zugrunde liegenden Einstellungen sind identisch.

Schritt 3: Grundlegende Informationen und OAuth-Einstellungen ausfüllen

Rolle: Salesforce-Administrator

  1. Füllen Sie den Abschnitt Basic Information aus (App Name und Contact Email sind erforderlich).

  2. Erweitern Sie den Abschnitt API (Enable OAuth Settings) und aktivieren Sie das Kontrollkästchen Enable OAuth.

  3. Konfigurieren Sie die folgenden Einstellungen in diesem Abschnitt:

    • Callback URL: Fügen Sie beide dieser Links hinzu und ersetzen Sie <your-discourse-site> durch die vollständige URL Ihrer Discourse-Website (z. B. meta.discourse.org):
      https://<your-discourse-site>
      https://<your-discourse-site>/auth/salesforce/callback
      :star: Stellen Sie sicher, dass am Ende keiner der beiden URLs ein Schrägstrich / steht!
    • Available OAuth Scopes: Fügen Sie alle drei hinzu:
      • Access the identify URL service (id, profile, email, address, phone)
      • Manage user data via APIs (api)
      • Perform requests at any time (refresh_token, offline_access)
    • Flow Enablement: Aktivieren Sie beide:
      • Enable Client Credentials Flow
      • Enable JWT Bearer Flow — dies ist erforderlich, damit das Plugin Leads, Kontakte und Fälle erstellen kann
  4. Klicken Sie unter Certificate Upload auf Upload files und laden Sie die Datei server.crt aus Schritt 1 hoch.

  5. Klicken Sie auf Create.

Schritt 4: Consumer Key und Consumer Secret abrufen

Rolle: Salesforce-Administrator

  1. Klicken Sie auf der neu erstellten External Client App auf die Registerkarte Settings.

  2. Scrollen Sie nach unten und erweitern Sie die OAuth Settings.

  3. Klicken Sie auf Consumer Key and Secret.

  4. Geben Sie bei Aufforderung erneut Ihre Salesforce-Anmeldedaten ein.

  5. Kopieren Sie den Consumer Key und das Consumer Secret und senden Sie sie an Ihren Discourse-Administrator für Schritt 5.

Schritt 5: Konfigurieren der Discourse-Plugin-Einstellungen

Rolle: Discourse-Administrator

  1. Gehen Sie in Discourse zu Admin → Plugins → Salesforce → Settings.

  2. Füllen Sie die folgenden Einstellungen aus:

    Einstellung Wert
    salesforce enabled Aktivieren Sie das Kontrollkästchen, um die Integration zu aktivieren
    salesforce client id Der Consumer Key aus Schritt 4
    salesforce client secret Das Consumer Secret aus Schritt 4
    salesforce rsa private key Fügen Sie den gesamten Inhalt der Datei server.key aus Schritt 1 ein
    salesforce username Der Benutzername des Salesforce-Integrationsbenutzers
    salesforce authorization server url Nur erforderlich, wenn Sie eine benutzerdefinierte Salesforce-Domain verwenden (z. B. https://mycompany.my.salesforce.com)

  3. Klicken Sie auf Save changes.

Schritt 6: Die Discourse-App in Salesforce autorisieren

Rolle: Salesforce-Integrationsbenutzer

  1. Gehen Sie zu https://<your-discourse-site>/salesforce/admin/authorize und ersetzen Sie <your-discourse-site> durch die vollständige URL Ihrer Discourse-Website (z. B. meta.discourse.org).
  2. Sie werden zu Salesforce weitergeleitet und aufgefordert, die App zu autorisieren.
  3. Melden Sie sich bei Salesforce an und erteilen Sie der App Zugriff.

Nach Abschluss dieses Schritts sollte alles einsatzbereit sein. Sie können überprüfen, ob es funktioniert, indem Sie zu einem beliebigen Benutzerprofil in Discourse gehen — eine Option Sync with Salesforce sollte im Admin-Menü angezeigt werden.

Fehlerbehebung

Wenn das Plugin nach der Einrichtung nicht funktioniert, prüfen Sie zunächst Folgendes:

  • Gesundheitsprüfungen im Admin-Dashboard: Das Plugin zeigt zwei Warnungen unter /admin an, wenn die Konfiguration fehlerhaft ist:

    • SalesforceInvalidCredentials: Der Consumer Key, Consumer Secret, RSA-private Schlüssel oder Benutzername ist falsch
    • SalesforceAppNotApproved: Der Autorisierungsschritt (Schritt 6) wurde nicht abgeschlossen oder die verbundene App wurde abgelehnt
  • Ausführliche Protokollierung aktivieren: Aktivieren Sie die Website-Einstellung salesforce_auth_verbose_logging, um detaillierte Authentifizierungsausgaben in den Discourse-Protokollen (/logs) zu schreiben. Häufige Fehler und Ursachen:

Symptom Wahrscheinliche Ursache
„Insufficient privileges“ beim Erstellen eines Leads oder Kontakts Der Integrationsbenutzer hat keine Berechtigungen zum Erstellen/Bearbeiten von Lead- oder Kontakt-Objekten
„Insufficient privileges“ beim Erstellen eines Falls Dem Integrationsbenutzer fehlen Berechtigungen für Fälle oder Fallkommentare
„Invalid grant“ beim Autorisierungsschritt Der RSA-Schlüssel passt nicht zum in Schritt 3 hochgeladenen Zertifikat, oder der JWT Bearer Flow wurde nicht aktiviert
„DUPLICATE_VALUE“-Fehler beim Erstellen eines Leads oder Kontakts Erwartetes Verhalten, wenn der Benutzer bereits in Salesforce existiert — das Plugin behandelt dies, siehe jedoch die Hauptdokumentation des Plugins für Details
Chatter-Beiträge erscheinen nicht Der Integrationsbenutzer hat möglicherweise keine Berechtigung zum Erstellen von FeedItems