Apercu
Le connecteur Salesforce fournit la fonctionnalite permettant de recuperer des donnees depuis les objets Salesforce (objets standard, objets personnalises) et de les enregistrer dans l’index Fess.
Cette fonctionnalite necessite le plugin fess-ds-salesforce.
Objets pris en charge
Objets standard : Account, Contact, Lead, Opportunity, Case, Solution, etc.
Objets personnalises : Objets crees par l’utilisateur
Articles Knowledge : Salesforce Knowledge
Prerequis
L’installation du plugin est requise
La creation d’une application connectee (Connected App) Salesforce est necessaire
La configuration de l’authentification OAuth est necessaire
L’acces en lecture aux objets est requis
Installation du plugin
Installez depuis l’interface d’administration via « Systeme » -> « Plugins ».
Ou consultez Présentation pour plus de details.
Configuration
Configurez depuis l’interface d’administration via « Crawler » -> « Data Store » -> « Nouveau ».
Configuration de base
| Element | Exemple |
|---|---|
| Nom | Salesforce CRM |
| Nom du gestionnaire | SalesforceDataStore |
| Active | Oui |
Configuration des parametres
Authentification OAuth Token (recommandee) :
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
Authentification OAuth Password :
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
Liste des parametres
| Parametre | Requis | Description |
|---|---|---|
base_url | Oui | URL Salesforce (Production : https://login.salesforce.com, Sandbox : https://test.salesforce.com) |
auth_type | Oui | Type d’authentification (oauth_token ou oauth_password) |
username | Oui | Nom d’utilisateur Salesforce |
client_id | Oui | Consumer Key de l’application connectee |
private_key | Pour oauth_token | Cle privee (format PEM, sauts de ligne en \n) |
client_secret | Pour oauth_password | Consumer Secret de l’application connectee |
security_token | Pour oauth_password | Token de securite de l’utilisateur |
number_of_threads | Non | Nombre de threads de traitement parallele (par defaut : 1) |
ignoreError | Non | Continuer le traitement en cas d’erreur (par defaut : true) |
custom | Non | Noms des objets personnalises (separes par des virgules) |
<objet>.title | Non | Nom du champ a utiliser pour le titre |
<objet>.contents | Non | Noms des champs a utiliser pour le contenu (separes par des virgules) |
Configuration du script
title="[" + object.type + "] " + object.title
digest=object.description
content=object.content
created=object.created
timestamp=object.last_modified
url=object.url
Champs disponibles
| Champ | Description |
|---|---|
object.type | Type de l’objet (ex: Case, User, Solution) |
object.title | Nom de l’objet |
object.description | Description de l’objet |
object.content | Contenu textuel de l’objet |
object.id | ID de l’objet |
object.content_length | Longueur du contenu |
object.created | Date de creation |
object.last_modified | Date de derniere modification |
object.url | URL de l’objet |
object.thumbnail | URL de la miniature |
Configuration de l’application connectee Salesforce
1. Creation de l’application connectee
Dans Salesforce Setup :
Ouvrez « Gestionnaire d’applications »
Cliquez sur « Nouvelle application connectee »
Entrez les informations de base :
Nom de l’application connectee : Fess Crawler
Nom de l’API : Fess_Crawler
Email de contact : your-email@example.com
Cochez « Activer les parametres OAuth (Activer OAuth) »
2. Configuration de l’authentification OAuth Token (recommandee)
Dans les parametres OAuth :
Cochez « Utiliser les signatures numeriques »
Telechargez un certificat (cree selon les etapes ci-dessous)
Scopes OAuth selectionnes :
Full access (full)
Perform requests on your behalf at any time (refresh_token, offline_access)
Cliquez sur « Enregistrer »
Copiez la Consumer Key
Creation du certificat :
# Generation de la cle privee
openssl genrsa -out private_key.pem 2048
# Generation du certificat
openssl req -new -x509 -key private_key.pem -out certificate.crt -days 365
# Verification de la cle privee
cat private_key.pem
Telechargez le certificat (certificate.crt) sur Salesforce et configurez le contenu de la cle privee (private_key.pem) dans les parametres.
3. Configuration de l’authentification OAuth Password
Dans les parametres OAuth :
URL de callback :
https://localhost(non utilisee mais requise)Scopes OAuth selectionnes :
Full access (full)
Perform requests on your behalf at any time (refresh_token, offline_access)
Cliquez sur « Enregistrer »
Copiez la Consumer Key et le Consumer Secret
Obtention du token de securite :
Ouvrez les parametres personnels dans Salesforce
Cliquez sur « Reinitialiser mon token de securite »
Copiez le token envoye par email
4. Autorisation de l’application connectee
Dans « Administration » -> « Gerer les applications connectees » :
Selectionnez l’application connectee creee
Cliquez sur « Modifier »
Changez « Utilisateurs autorises » en « Les utilisateurs approuves par l’administrateur sont preautorises »
Attribuez des profils ou des ensembles de permissions
Configuration des objets personnalises
Crawl des objets personnalises
Specifiez les noms des objets personnalises avec le parametre custom :
custom=FessObj,CustomProduct,ProjectTask
Mapping des champs pour chaque objet :
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
Regles de mapping des champs
<nom_objet>.title- Champ a utiliser pour le titre (champ unique)<nom_objet>.contents- Champs a utiliser pour le contenu (plusieurs separes par des virgules)
Exemples d’utilisation
Crawl des objets standard
Parametres :
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
Script :
title="[" + object.type + "] " + object.title
content=object.content
digest=object.description
created=object.created
timestamp=object.last_modified
url=object.url
Crawl des objets personnalises
Parametres :
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
Script :
title="[" + object.type + "] " + object.title
content=object.content
created=object.created
timestamp=object.last_modified
url=object.url
Crawl d’un environnement Sandbox
Parametres :
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
Script :
title="[SANDBOX] [" + object.type + "] " + object.title
content=object.content
timestamp=object.last_modified
url=object.url
Depannage
Erreur d’authentification
Symptome : Authentication failed ou invalid_grant
Points a verifier :
Pour l’authentification OAuth Token :
Verifier si la Consumer Key est correcte
Verifier si la cle privee est correctement copiee (sauts de ligne en
\n)Verifier si le certificat a ete telecharge sur Salesforce
Verifier si le nom d’utilisateur est correct
Pour l’authentification OAuth Password :
Verifier si la Consumer Key et le Consumer Secret sont corrects
Verifier si le token de securite est correct
Verifier que le mot de passe et le token de securite ne sont pas concatenes (configurer separement)
Commun :
Verifier si base_url est correct (environnement de production ou Sandbox)
Verifier si l’application connectee est autorisee
Impossible de recuperer les objets
Symptome : Le crawl reussit mais 0 objets
Points a verifier :
Verifier si l’utilisateur a les droits de lecture sur l’objet
Pour les objets personnalises, verifier si le nom de l’objet est correct (nom de reference API)
Verifier si le mapping des champs est correct
Verifier les messages d’erreur dans les logs
Nom des objets personnalises
Verifier le nom de reference API de l’objet personnalise :
Ouvrez « Gestionnaire d’objets » dans Salesforce Setup
Selectionnez l’objet personnalise
Copiez le « Nom de l’API » (se termine generalement par
__c)
Exemple :
Label d’affichage : Product
Nom de l’API : Product__c (utilisez celui-ci)
Verification des noms de champs
Verifier le nom de reference API des champs personnalises :
Ouvrez « Champs et relations » de l’objet
Selectionnez le champ personnalise
Copiez le « Nom du champ » (se termine generalement par
__c)
Exemple :
Label d’affichage du champ : Product Description
Nom du champ : Product_Description__c (utilisez celui-ci)
Limitation de debit API
Symptome : REQUEST_LIMIT_EXCEEDED
Solution :
Reduire
number_of_threads(definir a 1)Augmenter l’intervalle de crawl
Verifier l’utilisation de l’API Salesforce
Acheter des limites API supplementaires si necessaire
Cas de nombreuses donnees
Symptome : Le crawl prend du temps ou expire
Solution :
Diviser les objets en plusieurs data stores
Ajuster
number_of_threads(environ 2-4)Repartir le calendrier de crawl
Mapper uniquement les champs necessaires
Erreur de format de cle privee
Symptome : Invalid private key format
Solution :
Verifier si les sauts de ligne de la cle privee sont correctement en \n :
# Format correct
private_key=-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQE...\n-----END PRIVATE KEY-----\n
# Format incorrect (contient des sauts de ligne reels)
private_key=-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQE...
-----END PRIVATE KEY-----
Informations de reference
Apercu des connecteurs DataStore - Apercu des connecteurs Data Store
Connecteur base de donnees - Connecteur de base de donnees
Présentation - Guide de configuration Data Store