
Procédure de déplacement d’un dossier Box dans Salesforce
Si votre organisation Salesforce a été intégrée à Box, il se peut que vous deviez déplacer un dossier Box d’un emplacement à un autre. Dans cet article, nous allons apprendre à déplacer correctement un dossier Box dans Salesforce.
Hypothèses
- L’organisation Salesforce est déjà acquise.
- Le compte Box est déjà acquis.
- Le compte Box est déjà intégré à l’organisation Salesforce.
Pas
#1 Créer une application connectée dans Box
- Connectez-vous au compte box.
- Cliquer sur Console de développement bouton.
- Cela ouvrira la console des développeurs Box dans un nouvel onglet.
- Aller vers Mes applications section du tiroir de navigation de gauche.
- Cliquez sur « Créer une nouvelle application »
- Dans l’invite, sélectionnez « Serveur authentification(avec JWT) »dans la section authentification.
- Donnez un nom d’application tel que « Box-Cust-App »
- Cliquez sur « Créer une application »
- Ouvrez maintenant l’application nouvellement créée
- Accédez à l’onglet «Configuration».
- Faites défiler jusqu’à la section «Champ d’application».
- Cochez la case «écrire tous les fichiers et dossiers stockés dans Box».
- Faites défiler la page jusqu’à la section « Ajouter et gérer des clés publiques »
- Cliquez sur le bouton «Générer une paire de clés publique / privée».
(Remarque: l’authentification à deux facteurs doit être activée pour votre compte Box afin de générer une paire de clés publique / privée.)
- Le navigateur vous invite à télécharger un config.json déposer. Téléchargez le fichier et gardez-le de côté pour le moment. (Nous utiliserons le fichier dans l’une des étapes suivantes)
- Naccédez à l’onglet « Autorisation » et cliquez sur « Vérifier et soumettre ».
- Revenez maintenant à la page du compte de la boîte et cliquez sur «Admin Console».
- Ouvrez «Applications» dans le menu de navigation de gauche.
- Accédez à l’onglet « Applications personnalisées »
- Dans cet écran, vous verrez votre application personnalisée renseignée dans la liste que vous avez soumise pour examen plus tôt.
- Cliquez sur la valeur de la colonne «Statut» de l’application personnalisée et sélectionnez «Autoriser».
# 2 Tirer parti de l’API BOX Move
Dans cette étape, nous utiliserons un script python pour tirer parti de l’API Move de Box afin de déplacer réellement un dossier d’un emplacement à un autre.
- Créez un projet python dans l’un de vos IDE préférés.
- À l’aide de pip, installez les packages suivants – boxsdk, jwt.
- Copiez et collez le fichier «config.json» téléchargé à l’étape précédente dans le dossier racine du projet python.
- Écrivez le code suivant:
de boxsdk importer OAuth2, client
importer json
importer demandes
de cryptography.hazmat.backends importer default_backend
de cryptography.hazmat.primitives.serialization importer load_pem_private_key
importer temps
importer secrets
importer jwt
config = json.load (ouvert(‘config.json’))
appAuth = config[“boxAppSettings”][“appAuth”]
privateKey = appAuth[“privateKey”]
phrase de passe = appAuth[“passphrase”]
# https://cryptography.io/en/latest/
clé = load_pem_private_key (
data = privateKey.encode (‘utf8’),
mot de passe = passphrase.encode (‘utf8’),
backend = default_backend (),
)
authentication_url = ‘https://api.box.com/oauth2/token’
revendications = {
‘iss’: config[‘boxAppSettings’][‘clientID’],
‘sub’: config[‘enterpriseID’],
‘box_sub_type’: ‘entreprise’,
‘aud’: authentification_url,
‘jti’: secrets.token_hex (64),
‘exp’: rond(heure.heure ()) + 45
}
keyId = config[‘boxAppSettings’][‘appAuth’][‘publicKeyID’]
assertion = jwt.encode (
réclamations,
clé,
algorithme = ‘RS512’,
en-têtes = {
‘kid’: keyId
}
)
params = {
‘grant_type’: ‘urn: ietf: params: oauth: grant-type: jwt-bearer’,
‘assertion’: assertion,
‘client_id’: config[‘boxAppSettings’][‘clientID’],
‘client_secret’: config[‘boxAppSettings’][‘clientSecret’]
}
response = requests.post (authentification_url, paramètres)
oauth = OAuth2 (
client_id = config[‘boxAppSettings’][‘clientID’],
client_secret = config[‘boxAppSettings’][‘clientSecret’],
access_token = response.json ()[‘access_token’]
)
client = Client (oauth)
updated_folder = client.folder (folder_id = ‘130048807913 ′). update_info ({
« parent »: {
« Id »: « 129688895492 »
}
})
impression(‘Dossier mis à jour!’)
Le code ci-dessus utilise le fichier config.json afin de générer le jeton d’accès qui sera utilisé lors de l’exécution des opérations API:
- La chose importante à modifier dans le code ci-dessus est de modifier l’id du dossier (nous l’appelons CHILD FOLDER) qui doit être déplacé d’un emplacement à un autre (nous l’appelons PARENT FOLDER).
- Faites défiler jusqu’à la section et mettez à jour les identifiants en conséquence:
updated_folder = client.folder (folder_id = ‘‘) .update_info ({
« parent »: {
« Id »: ««
}
})
Noter: Vous pouvez trouver l’ID d’un dossier par les méthodes suivantes:
- Vous pouvez obtenir l’identifiant d’un dossier directement à partir du lien de la boîte qui est du format ci-dessous:
https://app.box.com/folder/130048807913 - Vous pouvez obtenir les identifiants de dossier depuis le portail Salesforce Workbench en interrogeant les tables ci-dessous: box__Folder_Meta__c – Contient des enregistrements pour les dossiers enfants.box__FolderId__c – Contient des enregistrements pour les dossiers parents.
# 3 Synchroniser les données dans Salesforce
- Ouvrez la page des paramètres de la boîte dans Salesforce.
- Cliquez sur le bouton «Synchroniser maintenant».
# 4 Mettre à jour les entrées dans les tables Salesforce
La dernière étape consiste à mettre à jour la table box__FRUP__c qui contient les enregistrements mappant l’ID du dossier enfant avec le nom du dossier parent.
- Ouvrez la fenêtre de la console d’exécution APEX et exécutez le code ci-dessous: box__FRUP__c[] frup = nouvelle liste
();
essayer{
frup = [
SELECT
box__Folder_ID__c,
box__Object_Name__c,
box__Record_ID__c
from
box__FRUP__c
where
box__Record_ID__c = ‘<SOURCE_CHILD_FOLDER_ID>’
];
ListelistToUpdate = nouvelle Liste ();
pour (box__FRUP__c item: frup) {
box__Object_Name__c = ‘‘;
item.box__Record_ID__c = ‘‘; listToUpdate.add (élément);
}
update listToUpdate;
} catch (DmlException e) {
System.debug (‘Une erreur inattendue s’est produite:’ + e.getMessage ());
}