Résolution des problèmes du Openflow Connector for Salesforce Bulk API

Note

Ce connecteur est soumis aux conditions d’utilisation de Snowflake Connector.

Ce chapitre décrit comment dépanner le Openflow Connector for Salesforce Bulk API.

Surveillance

Pour suivre la quantité de données synchronisées de Salesforce vers Snowflake, interrogez la table des événements. L’exemple de requête suivant récupère les journaux pertinents des 30 dernières minutes :

SELECT
  timestamp,
  Deployment_ID,
  Runtime_Key,
  parsed_log:level as log_level,
  parsed_log:loggerName as logger,
  parsed_log:formattedMessage as message,
  parsed_log
FROM (
  SELECT
    timestamp,
    resource_attributes:"openflow.dataplane.id" as Deployment_ID,
    resource_attributes:"k8s.namespace.name" as Runtime_Key,
    TRY_PARSE_JSON(value) as parsed_log
  FROM OPENFLOW.TELEMETRY.EVENTS
  WHERE true
    AND timestamp > dateadd('minutes', -30, sysdate())
    AND record_type = 'LOG'
    AND resource_attributes:"k8s.namespace.name" like 'runtime-%'
  ORDER BY timestamp DESC
)
WHERE true
  AND logger = 'org.apache.nifi.processors.standard.LogMessage'
  AND message LIKE '%SALESFORCE_BULK_API%';

Résolution des problèmes

Utilisez les informations suivantes pour résoudre les problèmes liés au connecteur.

Authentification et erreurs OAuth

Le connecteur utilise le flux porteur OAuth 2.0JWT pour s’authentifier auprès de Salesforce. Les erreurs d’authentification se produisent généralement lors de la configuration initiale et peuvent être diagnostiquées à l’aide de la fonctionnalité de vérification sur le service du contrôleur avant de démarrer le connecteur.

Erreur invalid_grant

L’erreur invalid_grant indique que Salesforce a rejeté la demande de jeton OAuth. Les causes courantes sont les suivantes :

  • **Type de flux OAuth incorrect.**La case à cocher Enable JWT Bearer Flow n’est pas sélectionnée dans l’application cliente externe dans Salesforce. Le connecteur requiert ce flux spécifique. Les autres flux OAuth (tels que le flux de code d’autorisation) ne sont pas pris en charge. Voir Créer une application client externe dans Salesforce.

  • La clé privée et le certificat ne correspondent pas. La clé privée configurée dans le connecteur (le paramètre Connected App Key) ne correspond pas au certificat public chargé dans l’application cliente externe dans Salesforce.

  • ** Mauvaise clé de consommateur.** Le paramètre OAuth2 Client ID ne correspond pas à la Consumer Key de l’application client externe où le certificat a été chargé.

  • Identifiants de connexion mixtes provenant de plusieurs applications. Si vous avez créé plusieurs applications clientes externes ou essayé différentes configurations, l’ID d’application cliente, le certificat et la clé privée peuvent appartenir à différentes applications. Tous les trois doivent provenir de la même application cliente externe.

  • Application connectée obsolète. Salesforce a abandonné les applications connectées obsolètes au profit des applications clientes externes. Si vous utilisez une application connectée, Snowflake recommande de créer une nouvelle application cliente externe à la place.

  • Point de terminaison de jeton incorrectURL . Le paramètre OAuth2 Token Endpoint URL doit pointer vers l’instance correcte de Salesforce. Par exemple : https://myCompany.my.salesforce.com/services/oauth2/token.

  • Audience incorrecte. Le paramètre OAuth2 Audience doit être défini sur https://login.salesforce.com pour les environnements de production ou https://test.salesforce.com pour les environnements de test et les sandbox.

Erreurs d’autorisation

Si le jeton JWT est généré avec succès, mais l’utilisateur ne dispose pas des autorisations nécessaires, vous voyez une erreur de permission ou d’autorisation. Cela signifie que le flux du porteur JWT fonctionne, mais l’utilisateur Salesforce (le sujet OAuth2) n’est pas autorisé à utiliser l’application cliente externe.

Pour résoudre ce problème

  1. Dans Salesforce, accédez à l’onglet Policies de l’application cliente externe.

  2. Vérifiez que Permitted Users est défini sur Admin approved users are pre-authorized.

  3. Vérifiez que les profils ou les ensembles d’autorisations attribués dans la section App Policies comprennent l’utilisateur spécifié dans le paramètre OAuth2 Subject du connecteur.

Pour plus de détails, voir Approuver l’application cliente d’un utilisateur.

Vérifier l’état du connecteur

Vous pouvez examiner l’état du connecteur pour vous assurer que les données sont répliquées comme prévu. Le connecteur conserve un état des opérations actuelles et passées pour s’assurer qu’aucun changement Salesforce n’est manqué et pour réessayer les requêtes de tâches en masse si des échecs se produisent.

Pour voir l’état :

  1. Faites un clic droit sur le canevas et sélectionnez. Controller services.

  2. Localisez le service du contrôleur nommé Salesforce Bulk Jobs State.

  3. Dans le menu Salesforce Bulk Jobs State, cliquez sur View state.

L’état est un ensemble de paires clé/valeur où la clé est de type objet Salesforce. Par exemple, l’état de l’objet Account peut ressembler à l’exemple suivant :

{"previousLast":"2025-09-30T09:41:23.484406926Z","currentLast":"2025-09-30T09:41:23.484406926Z","status":"COMPLETED"}

Le status peut être l’un des suivant :

  • IN_PROGRESS

  • COMPLETED

  • FAILED

  • ABORTED

Si le statut est IN_PROGRESS, un FlowFile est toujours en cours de traitement pour ce type d’objet.

Prudence

Ne supprimez pas les fichiers de flux manuellement. Cela peut entraîner le maintien d’une tâche dans le statut IN_PROGRESS indéfiniment, car l’état ne peut pas être mis à jour manuellement.

Si cela se produit, vous devez effectuer un rechargement complet pour ce type d’objet.

Forcer un chargement complet pour un type d’objet donné

Pour forcer le connecteur à effectuer une actualisation complète pour un ou plusieurs types d’objets :

  1. Arrêtez tous les processeurs du flux.

  2. Assurez-vous qu’aucun FlowFiles actif est en cours de traitement.

  3. Faites un clic droit sur le canevas et sélectionnez. Disable all controller services.

  4. Accédez à Controller services et ouvrez l’état du service du contrôleur nommé Salesforce Bulk Jobs State.

  5. Effectuez au choix une de ces actions :

    • Sélectionnez Clear state pour effacer tout l’état. Cela force un chargement complet de tous les types d’objets configurés récupérés par le connecteur.

    • Sélectionnez l’icône de corbeille à côté d’un type d’objet spécifique pour effacer l’état d’un type d’objet spécifique uniquement. Cela force un chargement complet de ce type d’objet spécifique lors de la prochaine exécution du connecteur.

  6. Dans la zone de préparation, cliquez avec le bouton droit de la souris, sélectionnez Enable all controller services, puis démarrez tous les processeurs.

Si un type d’objet reste dans le statut IN_PROGRESS

Si l’état d’un type d’objet donné reste à IN_PROGRESS et s’il n’y a aucun FlowFiles actif pour ce type d’objet, un FlowFile peut avoir été supprimé manuellement avant la mise à jour du statut.

Dans ce cas, vous devez effectuer un chargement complet pour ce type d’objet afin de vous assurer que le connecteur capture tous les événements.

Si l’état reste à IN_PROGRESS et si aucun FlowFiles actif n’a été supprimé manuellement, contactez le Support Snowflake.