

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Connexion à Blackbaud Raiser’s Edge NXT
<a name="connecting-to-data-blackbaud"></a>

Blackbaud Raiser’s Edge NXT est une solution logicielle complète de collecte de fonds et de gestion des donateurs basée sur le cloud, spécialement conçue pour les organisations à but non lucratif et l’ensemble de la communauté sociale. Ce connecteur repose sur l’API SKY de Blackbaud Raiser’s Edge NXT et fournit des opérations pour permettre de gérer les entités présentes dans le Raisers Edge NXT.

**Topics**
+ [AWS Glue support pour Blackbaud Raiser's Edge NXT](blackbaud-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](blackbaud-configuring-iam-permissions.md)
+ [Configuration de Blackbaud Raiser’s Edge NXT](blackbaud-configuring.md)
+ [Configuration des connexions Blackbaud Raiser’s Edge NXT](blackbaud-configuring-connections.md)
+ [Lecture à partir des entités Blackbaud Raiser’s Edge NXT](blackbaud-reading-from-entities.md)
+ [Options de connexion Blackbaud Raiser’s Edge NXT](blackbaud-connection-options.md)
+ [Restrictions de Blackbaud Raiser’s Edge NXT](blackbaud-connection-limitations.md)

# AWS Glue support pour Blackbaud Raiser's Edge NXT
<a name="blackbaud-support"></a>

AWS Glue prend en charge Blackbaud Raiser's Edge NXT comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger des données depuis Blackbaud Raiser's Edge NXT.

**Prise en charge en tant que cible ?**  
Non.

**Versions de l’API Blackbaud Raiser’s Edge NXT prises en charge**  
Les versions suivantes de l’API Blackbaud Raiser’s Edge NXT sont prises en charge :
+ v1

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="blackbaud-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "glue:RefreshOAuth2Tokens",
        "glue:ListEntities",
        "glue:DescribeEntity"
      ],
      "Resource": "*"
    }
  ]
}
```

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole)— Accorde l'accès aux ressources dont AWS Glue les différents processus ont besoin pour s'exécuter en votre nom. Ces ressources incluent AWS Glue Amazon S3, IAM, CloudWatch Logs et Amazon EC2. Si vous suivez la convention de dénomination des ressources spécifiée dans cette politique, AWS Glue les processus disposent des autorisations requises. Cette politique est généralement attachée aux rôles spécifiés lorsque vous définissez les crawlers, les tâches et les points de terminaison de développement.
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess)— Accorde un accès complet aux AWS Glue ressources lorsqu'une identité à laquelle la politique est attachée utilise la console AWS de gestion. Si vous suivez la convention de dénomination pour les ressources spécifiées dans la politique, les utilisateurs bénéficient des capacités totales de la console. Cette politique s'applique généralement aux utilisateurs de la AWS Glue console.

# Configuration de Blackbaud Raiser’s Edge NXT
<a name="blackbaud-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Blackbaud Raiser's Edge NXT, vous devez répondre aux exigences suivantes :

## Configuration requise
<a name="blackbaud-configuring-min-requirements"></a>

Les exigences minimales sont les suivantes :
+ Vous disposez d’un compte Blackbaud Raiser’s Edge NXT.
+ Vous avez généré un jeton d'accès sur votre compte Blackbaud Raiser's Edge NXT avec l' read/write étendue appropriée attribuée pour accéder au. APIs Pour plus d’informations, consultez [Authorization](https://developer.blackbaud.com/skyapi/docs/authorization).

Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Blackbaud Raiser's Edge NXT.

# Configuration des connexions Blackbaud Raiser’s Edge NXT
<a name="blackbaud-configuring-connections"></a>

Blackbaud Raiser's Edge NXT prend en charge le type de subvention AUTHORIZATION\$1CODE pour. OAuth2
+ Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers un serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. La AWS Glue console redirige l'utilisateur vers Blackbaud Raiser's Edge NXT où il doit se connecter et autoriser AWS Glue les autorisations demandées pour accéder à son instance Blackbaud Raiser's Edge NXT.
+ Les utilisateurs peuvent choisir de créer leur propre application connectée dans Blackbaud Raiser's Edge NXT et de fournir leur propre identifiant client, clé d'abonnement et URL d'instance lors de la création de connexions via la console. AWS Glue Dans ce scénario, ils seront toujours redirigés vers Blackbaud Raiser's Edge NXT pour se connecter et autoriser AWS Glue l'accès à leurs ressources.
+ Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation.
+ [Pour consulter la documentation publique de Blackbaud Raiser's Edge NXT sur la création d'une application connectée pour le OAuth flux de code d'autorisation, voir Autorisation.](https://developer.blackbaud.com/skyapi/docs/authorization)

Pour configurer une connexion Blackbaud Raiser’s Edge NXT :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir la clé d’API de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé.

   1. Remarque : vous devez créer un secret pour vos connexions dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez Blackbaud Raiser’s Edge NXT.

   1. Indiquez l’`INSTANCE_URL` du compte Blackbaud Raiser’s Edge NXT auquel vous souhaitez vous connecter.

   1. Indiquez le `clientId` de l’application du client gérée par l’utilisateur.

   1. Indiquez la clé d’abonnement associée à votre compte.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer les actions suivantes et qui dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "secretsmanager:DescribeSecret",
              "secretsmanager:GetSecretValue",
              "secretsmanager:PutSecretValue",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir des entités Blackbaud Raiser’s Edge NXT
<a name="blackbaud-reading-from-entities"></a>

**Prérequis**

Un objet Blackbaud Raiser’s Edge NXT à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Constituent Address | Oui | Oui | Non | Oui | Oui | 
| Constituent Education | Oui | Oui | Non | Oui | Oui | 
| Constituent Email address | Oui | Oui | Non | Oui | Oui | 
| Constituent Phone | Oui | Oui | Non | Oui | Oui | 
| Constituent Note | Oui | Oui | Non | Oui | Oui | 
| Constituent Relationship | Oui | Oui | Non | Oui | Oui | 
| Constituent Online presence | Oui | Oui | Non | Oui | Oui | 
| Opportunity | Oui | Oui | Non | Oui | Oui | 
| Appeal | Oui | Oui | Non | Oui | Oui | 
| Campaign | Oui | Oui | Non | Oui | Oui | 
| Fund | Oui | Oui | Non | Oui | Oui | 
| Package | Oui | Oui | Non | Oui | Oui | 
| Gift Batch | Oui | Oui | Non | Oui | Non | 
| Event Participant | Oui | Oui | Oui | Oui | Oui | 
| Constituent Fundraiser Assignment | Non | Non | Non | Oui | Non | 
| Gift | Oui | Oui | Oui | Oui | Oui | 
| Membres | Oui | Oui | Non | Oui | Oui | 
| Action | Oui | Oui | Non | Oui | Non | 
| Constituent | Oui | Oui | Oui | Oui | Oui | 
| Constituent Goods | Oui | Oui | Non | Oui | Oui | 
| Événement | Oui | Oui | Oui | Oui | Oui | 
| Gift custom field | Oui | Oui | Non | Oui | Oui | 

**Exemple :**

```
blackbaud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="BLACKBAUD",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v1",
        "SUBSCRIPTION_KEY": <Subscription key associated with one's developer account>
    }
```

## Détails des entités et des champs Blackbaud Raiser’s Edge NXT
<a name="blackbaud-reading-entity-field-details"></a>

Pour plus d’informations sur les entités et de détails sur les champs, consultez :
+ [Action](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Action)
+ [Constituent](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Constituent)
+ [Constituent Address](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Address)
+ [Constituent Membership](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Membership)
+ [Constituent Fundraiser Assignment](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#FundraiserAssignment)
+ [Constituent Education](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Education)
+ [Constituent Email address](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#EmailAddress)
+ [Constituent Phone](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Phone)
+ [Constituent Note](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Note)
+ [Constituent Online presence](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#OnlinePresence)
+ [Constituent Relationship](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Relationship)
+ [Event](https://developer.blackbaud.com/skyapi/renxt/event/entities#Event)
+ [Event Participant](https://developer.blackbaud.com/skyapi/renxt/event/entities#Participant)
+ [Appeal](https://developer.blackbaud.com/skyapi/renxt/fundraising/entities#Appeal)
+ [Campaign](https://developer.blackbaud.com/skyapi/renxt/fundraising/entities#Campaign)
+ [Fund](https://developer.blackbaud.com/skyapi/renxt/fundraising/entities#Fund)
+ [Package](https://developer.blackbaud.com/skyapi/renxt/fundraising/entities#Package)
+ [Gift](https://developer.blackbaud.com/skyapi/renxt/gift/entities#Gift)
+ [Gift Custom Field](https://developer.blackbaud.com/skyapi/renxt/gift/entities#CustomField)
+ [Gift Batch](https://developer.blackbaud.com/skyapi/renxt/gift-batch/entities#GiftBatch)
+ [Opportunity](https://developer.blackbaud.com/skyapi/renxt/opportunity/entities#Opportunity)
+ [Constituent Codes](https://developer.sky.blackbaud.com/api#api=56b76470069a0509c8f1c5b3)

**Note**  
Les types de données Struct et List sont convertis en type de données String, et le type de DateTime données est converti en Timestamp dans la réponse des connecteurs.

## Requêtes de partitionnement
<a name="blackbaud-reading-partitioning-queries"></a>

**Partitionnement basé sur les champs** :

Blackbaud Raiser’s Edge NXT ne prend pas en charge le partitionnement basé sur les champs ou les enregistrements.

**Partitionnement basé sur des enregistrements** :

Vous pouvez indiquer l’option Spark supplémentaire `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ce paramètre, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.

Dans le partitionnement basé sur les enregistrements, le nombre total d’enregistrements présents est demandé par l’API Blackbaud Raiser’s Edge NXT, puis divisé par le nombre `NUM_PARTITIONS` fourni. Le nombre d’enregistrements qui en résulte est ensuite extrait simultanément par chaque sous-requête.
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
blackbaud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="BLACKBAUD",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v1",
        "NUM_PARTITIONS": "2",
        "SUBSCRIPTION_KEY": <Subscription key associated with one's developer account>
    }
```

# Options de connexion Blackbaud Raiser’s Edge NXT
<a name="blackbaud-connection-options"></a>

Les options de connexion pour Blackbaud Raiser’s Edge NXT sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Blackbaud Raiser’s Edge NXT.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version que vous souhaitez utiliser de l’API Rest Blackbaud Raiser’s Edge NXT.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture. Exemple de valeur : 10.
+ `SUBSCRIPTION_KEY`(Chaîne) - (Obligatoire) Par défaut : vide. Utilisé pour la lecture. Clé d’abonnement associée à son compte de développeur.

# Restrictions de Blackbaud Raiser’s Edge NXT
<a name="blackbaud-connection-limitations"></a>

Voici les restrictions ou remarques relatives à Blackbaud Raiser’s Edge NXT :
+ Le SaaS ne prend en charge que l’opérateur `EQUAL_TO`, qui renvoie les résultats créés ou modifiés à la date spécifiée ou après cette date. De plus, le champ « id » est un type de données String. Il n’y a pas non plus d’identification des champs n’autorisant pas les valeurs nulles. Par conséquent, le partitionnement basé sur les champs n’est pas pris en charge.
+ L’attraction incrémentielle n’est prise en charge par l’entité `Event` qu’avec des fréquences quotidiennes, mensuelles et hebdomadaires.
+ L’entité Constituent Fundraiser Assignment renvoie un maximum de 20 enregistrements.
+ Partitionnement basé sur les enregistrements :
  + Non pris en charge par les entités `Action`, `Constituent Fundraiser Assignment` ou `Gift Batch`.
  + Le partitionnement basé sur les enregistrements avec le prédicat de filtre n’est pris en charge que par les entités `Event` et `Event Participant`. Si un prédicat de filtre est utilisé avec d’autres entités prises en charge basées sur des enregistrements, une exception sera émise.
+ Dans l’entité `Gift Custom Field`, le champ « value » doit être utilisé conjointement avec le champ « category », faute de quoi une réponse non filtrée sera envoyée. Ainsi, pour obliger l’utilisateur à saisir le champ « category » lors du filtrage avec le champ « value », une exception sera émise si l’exigence susmentionnée n’a pas été respectée.
+ Les champs `date_added` et `last_modified` de toutes les entités applicables ne prennent en charge aucun opérateur comparatif. Ils ne prennent en charge que l’opérateur égal à. De plus, aucun champ ne peut être associé aux champs susmentionnés pour fournir une gamme d’enregistrements. Par conséquent, ces champs sont uniquement interrogeables et ne peuvent pas prendre en charge le transfert incrémentiel.
+ Le champ `added_by` de l’entité `Gift Batch` ne sera pas considéré comme filtrable, car il risque de ne pas émettre les bons résultats.
+ Il existe une latence d’environ 30 minutes pour que les enregistrements soient récupérés via le point de terminaison `/GET Gift List` lors de l’insertion des données dans l’entité `Gift`.
+ La prise en charge du transfert incrémentiel a été abandonnée pour l’entité Gift en raison de restrictions liées à la source de données. 
+ Il existe une latence de 10 minutes pour le champ de statut dans l’entité Opportunity.
+ L’entité `Fundraiser Assignment` a `Constituent` comme entité dépendante. Le connecteur charge au maximum 5 000 personnes IDs parmi lesquelles choisir, afin d'éviter que la taille de réponse ne dépasse la taille de charge utile maximale autorisée.