Übersicht
Der Salesforce-Konnektor bietet die Funktionalität, Daten von Salesforce-Objekten (Standardobjekte, benutzerdefinierte Objekte) abzurufen und im Fess-Index zu registrieren.
Für diese Funktion ist das Plugin fess-ds-salesforce erforderlich.
Unterstützte Objekte
Standardobjekte: Account, Contact, Lead, Opportunity, Case, Solution usw.
Benutzerdefinierte Objekte: Selbst erstellte Objekte
Knowledge-Artikel: Salesforce Knowledge
Voraussetzungen
Die Installation des Plugins ist erforderlich
Eine Salesforce Connected App muss erstellt werden
OAuth-Authentifizierung muss konfiguriert werden
Lesezugriff auf die Objekte ist erforderlich
Plugin-Installation
Installieren Sie über die Administrationsoberfläche unter „System“ -> „Plugins“.
Oder weitere Details finden Sie unter Plug-ins.
Konfiguration
Konfigurieren Sie über die Administrationsoberfläche unter „Crawler“ -> „Datenspeicher“ -> „Neu erstellen“.
Grundeinstellungen
| Einstellung | Beispielwert |
|---|---|
| Name | Salesforce CRM |
| Handler-Name | SalesforceDataStore |
| Aktiviert | Ein |
Parameter-Einstellungen
OAuth Token-Authentifizierung (empfohlen):
base_url=https://login.salesforce.com
auth_type=oauth_token
username=admin@example.com
client_id=3MVG9...
private_key=-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQE...\n-----END PRIVATE KEY-----\n
number_of_threads=1
ignoreError=true
custom=FessObj,CustomProduct
FessObj.title=Name
FessObj.contents=Name,Description__c
CustomProduct.title=Product_Name__c
CustomProduct.contents=Product_Name__c,Product_Description__c
OAuth Password-Authentifizierung:
base_url=https://login.salesforce.com
auth_type=oauth_password
username=admin@example.com
client_id=3MVG9...
client_secret=1234567890ABCDEF
security_token=AbCdEfGhIjKlMnOpQrSt
number_of_threads=1
ignoreError=true
Parameterliste
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
base_url | Ja | Salesforce-URL (Produktion: https://login.salesforce.com, Sandbox: https://test.salesforce.com) |
auth_type | Ja | Authentifizierungstyp (oauth_token oder oauth_password) |
username | Ja | Salesforce-Benutzername |
client_id | Ja | Consumer Key der Connected App |
private_key | bei oauth_token | Privater Schlüssel (PEM-Format, Zeilenumbrüche als \n) |
client_secret | bei oauth_password | Consumer Secret der Connected App |
security_token | bei oauth_password | Sicherheitstoken des Benutzers |
number_of_threads | Nein | Anzahl paralleler Verarbeitungs-Threads (Standard: 1) |
ignoreError | Nein | Bei Fehler Verarbeitung fortsetzen (Standard: true) |
custom | Nein | Namen benutzerdefinierter Objekte (kommagetrennt) |
<Objekt>.title | Nein | Feldname für Titel |
<Objekt>.contents | Nein | Feldnamen für Inhalt (kommagetrennt) |
Skript-Einstellungen
title="[" + object.type + "] " + object.title
digest=object.description
content=object.content
created=object.created
timestamp=object.last_modified
url=object.url
Verfügbare Felder
| Feld | Beschreibung |
|---|---|
object.type | Objekttyp (z.B.: Case, User, Solution) |
object.title | Name des Objekts |
object.description | Beschreibung des Objekts |
object.content | Textinhalt des Objekts |
object.id | Objekt-ID |
object.content_length | Länge des Inhalts |
object.created | Erstellungsdatum |
object.last_modified | Letztes Änderungsdatum |
object.url | URL des Objekts |
object.thumbnail | Thumbnail-URL |
Salesforce Connected App konfigurieren
1. Connected App erstellen
Im Salesforce Setup:
Öffnen Sie „App-Manager“
Klicken Sie auf „Neue verbundene App“
Geben Sie die grundlegenden Informationen ein:
Name der verbundenen App: Fess Crawler
API-Name: Fess_Crawler
Kontakt-E-Mail: your-email@example.com
Aktivieren Sie „API aktivieren (OAuth-Einstellungen aktivieren)“
2. OAuth Token-Authentifizierung konfigurieren (empfohlen)
In den OAuth-Einstellungen:
Aktivieren Sie „Digitale Signatur verwenden“
Laden Sie ein Zertifikat hoch (im folgenden Schritt erstellt)
Ausgewählte OAuth-Bereiche:
Full access (full)
Perform requests on your behalf at any time (refresh_token, offline_access)
Klicken Sie auf „Speichern“
Kopieren Sie den Consumer Key
Zertifikaterstellung:
# Privaten Schlüssel generieren
openssl genrsa -out private_key.pem 2048
# Zertifikat generieren
openssl req -new -x509 -key private_key.pem -out certificate.crt -days 365
# Privaten Schlüssel überprüfen
cat private_key.pem
Laden Sie das Zertifikat (certificate.crt) in Salesforce hoch und setzen Sie den Inhalt des privaten Schlüssels (private_key.pem) in den Parametern.
3. OAuth Password-Authentifizierung konfigurieren
In den OAuth-Einstellungen:
Callback-URL:
https://localhost(wird nicht verwendet, aber erforderlich)Ausgewählte OAuth-Bereiche:
Full access (full)
Perform requests on your behalf at any time (refresh_token, offline_access)
Klicken Sie auf „Speichern“
Kopieren Sie Consumer Key und Consumer Secret
Sicherheitstoken abrufen:
Öffnen Sie die persönlichen Einstellungen in Salesforce
Klicken Sie auf „Mein Sicherheitstoken zurücksetzen“
Kopieren Sie das per E-Mail gesendete Token
4. Connected App genehmigen
Unter „Verwalten“ -> „Verbundene Apps verwalten“:
Wählen Sie die erstellte Connected App
Klicken Sie auf „Bearbeiten“
Ändern Sie „Zulässige Benutzer“ auf „Vom Administrator genehmigte Benutzer sind vorab genehmigt“
Weisen Sie Profile oder Berechtigungssets zu
Benutzerdefinierte Objekte konfigurieren
Benutzerdefinierte Objekte crawlen
Geben Sie in den Parametern mit custom die Namen der benutzerdefinierten Objekte an:
custom=FessObj,CustomProduct,ProjectTask
Feldmapping für jedes Objekt:
FessObj.title=Name
FessObj.contents=Name,Description__c,Notes__c
CustomProduct.title=Product_Name__c
CustomProduct.contents=Product_Name__c,Product_Description__c,Specifications__c
ProjectTask.title=Task_Name__c
ProjectTask.contents=Task_Name__c,Task_Description__c
Feldmapping-Regeln
<Objektname>.title- Feld für Titel (einzelnes Feld)<Objektname>.contents- Felder für Inhalt (mehrere kommagetrennt)
Anwendungsbeispiele
Standardobjekte crawlen
Parameter:
base_url=https://login.salesforce.com
auth_type=oauth_token
username=admin@example.com
client_id=3MVG9A2kN3Bn17hvOLkjEo7GFdC...
private_key=-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQE...\n-----END PRIVATE KEY-----\n
number_of_threads=1
ignoreError=true
Skript:
title="[" + object.type + "] " + object.title
content=object.content
digest=object.description
created=object.created
timestamp=object.last_modified
url=object.url
Benutzerdefinierte Objekte crawlen
Parameter:
base_url=https://login.salesforce.com
auth_type=oauth_token
username=admin@example.com
client_id=3MVG9A2kN3Bn17hvOLkjEo7GFdC...
private_key=-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQE...\n-----END PRIVATE KEY-----\n
number_of_threads=2
ignoreError=true
custom=Product__c,Contract__c
Product__c.title=Name
Product__c.contents=Name,Description__c,Category__c
Contract__c.title=Contract_Name__c
Contract__c.contents=Contract_Name__c,Terms__c,Notes__c
Skript:
title="[" + object.type + "] " + object.title
content=object.content
created=object.created
timestamp=object.last_modified
url=object.url
Sandbox-Umgebung crawlen
Parameter:
base_url=https://test.salesforce.com
auth_type=oauth_password
username=admin@example.com.sandbox
client_id=3MVG9A2kN3Bn17hvOLkjEo7GFdC...
client_secret=1234567890ABCDEF1234567890ABCDEF
security_token=AbCdEfGhIjKlMnOpQrStUvWxYz
number_of_threads=1
ignoreError=true
Skript:
title="[SANDBOX] [" + object.type + "] " + object.title
content=object.content
timestamp=object.last_modified
url=object.url
Fehlerbehebung
Authentifizierungsfehler
Symptom: Authentication failed oder invalid_grant
Zu überprüfen:
Bei OAuth Token-Authentifizierung:
Überprüfen Sie, ob der Consumer Key korrekt ist
Überprüfen Sie, ob der private Schlüssel korrekt kopiert wurde (Zeilenumbrüche als
\n)Überprüfen Sie, ob das Zertifikat in Salesforce hochgeladen wurde
Überprüfen Sie, ob der Benutzername korrekt ist
Bei OAuth Password-Authentifizierung:
Überprüfen Sie Consumer Key und Consumer Secret
Überprüfen Sie das Sicherheitstoken
Überprüfen Sie, dass Passwort und Sicherheitstoken nicht verkettet sind (separat konfigurieren)
Gemeinsam:
Überprüfen Sie, ob base_url korrekt ist (Produktions- oder Sandbox-Umgebung)
Überprüfen Sie, ob die Connected App genehmigt wurde
Objekte werden nicht abgerufen
Symptom: Crawling erfolgreich, aber 0 Objekte
Zu überprüfen:
Überprüfen Sie, ob der Benutzer Leseberechtigung für die Objekte hat
Bei benutzerdefinierten Objekten überprüfen Sie, ob der Objektname korrekt ist (API-Name)
Überprüfen Sie das Feldmapping
Überprüfen Sie die Logs auf Fehlermeldungen
Name des benutzerdefinierten Objekts
API-Namen des benutzerdefinierten Objekts ermitteln:
Öffnen Sie „Objekt-Manager“ im Salesforce Setup
Wählen Sie das benutzerdefinierte Objekt
Kopieren Sie den „API-Namen“ (endet normalerweise mit
__c)
Beispiel:
Bezeichnung: Product
API-Name: Product__c (diesen verwenden)
Feldname ermitteln
API-Namen des benutzerdefinierten Felds ermitteln:
Öffnen Sie „Felder und Beziehungen“ des Objekts
Wählen Sie das benutzerdefinierte Feld
Kopieren Sie den „Feldnamen“ (endet normalerweise mit
__c)
Beispiel:
Feldbeschriftung: Product Description
Feldname: Product_Description__c (diesen verwenden)
API-Ratenbegrenzung
Symptom: REQUEST_LIMIT_EXCEEDED
Lösung:
Reduzieren Sie
number_of_threads(auf 1 setzen)Verlängern Sie das Crawl-Intervall
Überprüfen Sie die Salesforce API-Nutzung
Bei Bedarf zusätzliche API-Limits erwerben
Bei großen Datenmengen
Symptom: Crawling dauert lange oder Timeout
Lösung:
Teilen Sie Objekte in mehrere Datenspeicher auf
Passen Sie
number_of_threadsan (ca. 2-4)Verteilen Sie die Crawl-Zeitplanung
Mappen Sie nur benötigte Felder
Formatfehler beim privaten Schlüssel
Symptom: Invalid private key format
Lösung:
Überprüfen Sie, ob die Zeilenumbrüche im privaten Schlüssel korrekt als \n vorliegen:
# Korrektes Format
private_key=-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQE...\n-----END PRIVATE KEY-----\n
# Falsches Format (enthält tatsächliche Zeilenumbrüche)
private_key=-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQE...
-----END PRIVATE KEY-----
Weiterführende Informationen
Übersicht der Datenspeicher-Konnektoren - Übersicht der Datenspeicher-Konnektoren
Datenbank-Konnektor - Datenbank-Konnektor
Datenspeicher-Crawl - Leitfaden zur Datenspeicher-Konfiguration