Passer au contenu principal
Adaptive Insights
Knowledge and Support - Adaptive Insights

Tables de sources de données NetSuite et types de données

Depuis Adaptive Integration 2017.1, l’adaptateur NetSuite prend en charge NetSuite’s 2016.2 SuiteTalk Web Services. Tous les adaptateurs provisionnés avant 2017.1 figureront dans l’offre de services Web 2013.2 de NetSuite. Il n’y a pas de migration automatique de l’adaptateur NetSuite d’Adaptive à partir de NetSuite 2013.2 à NetSuite 2016.2

 Tables NetSuite prises en charge

Le tableau ci-dessous présente des informations sur les tables prises en charge dans l’intégration de NetSuite Les colonnes de ce tableau affichent les informations suivantes :

  • Table d’intégration : Le nom de la table comme indiqué dans la source de données Adaptive Integration
  • Source de la table : Le nom de la table tel qu’il est utilisé dans le navigateur de schéma NetSuite
  • Accès : Le mécanisme d’accès pour chaque table NetSuite Les types sont :
  • “Recherche” signifie que l’intégration rapporte tous les enregistrements correspondant aux critères de recherche utilisant l’API spécifiée. “Recherche contrainte” signifie que l’intégration impose des contraintes supplémentaires à la recherche en plus des contraintes de recherche que NetSuite peut imposer.
  • “Tout obtenir” signifie que l’intégration rapporte tous les enregistrements utilisant l’API spécifiée.
  • “Différentiel” signifie que l’intégration ne concerne que les données qui ont changé.
  • Commentaires : Commentaires sur les tables

Integration prend également en charge les tables NetSuite personnalisées exposées par l’API de NetSuite Web Services. Vous pouvez choisir quelle table/colonnes importer pour chacune.

 

Table d’intégration Source de la table Accès Commentaires
Account AccountSearchRowBasic Rechercher  
AccountingPeriod AccountingPeriodSearchRowBasic Rechercher  
AdaptivePostingTransactionSummary    

Table créée par Adaptive dans la source de données d’intégration, non disponible dans NetSuite. Joint à la table PostingTransactionSummary aux tables de catégories standard (Compte, Période, Filiale, Département, Classe, Emplacement, Élément, Client)

AllCustomLists CustomList Tout obtenir  
Budget BudgetSearchRowBasic Rechercher  
BudgetExchangeRate Spécial : getBudgetExchangeRate Recherche contrainte  
CalendarEvent CalendarEventSearchRowBasic Rechercher  
Campaign CampaignSearchRowBasic Différentiel  
CampaignCategory CampaignCategory Tout obtenir  
CampaignFamily CampaignFamily Tout obtenir  
Classification ClassificationSearchRowBasic Rechercher  
ConsolidatedExchangeRate Spécial : getConsolidatedExchangeRate Recherche contrainte  
Contact ContactSearchRowBasic Rechercher  
Currency Currency Tout obtenir  
CustomerCategory CustomerSearchRowBasic Différentiel  
CustomerStatus CustomerCategorySearchRowBasic Rechercher  
DeletedRecord Special: getDeleted Recherche contrainte N’est pas destiné à l’utilisateur final
Department DepartmentSearchRowBasic Rechercher  
Employee EmployeeSearchRowBasic Différentiel  
EntityGroup EntityGroupSearchRowBasic Différentiel  
ExpenseCategory ExpenseCategorySearchRowBasic Rechercher  
Item ItemSearchRowBasic Différentiel  
Job JobSearchRowBasic Différentiel  
JobStatus JobStatusSearchRowBasic Rechercher  
JobType JobTypeSearchRowBasic Rechercher  
Location LocationSearchRowBasic    
NetSuiteServerTime Spécial : getServerTime    
Opportunity OpportunitySearchRowBasic    
Partner PartnerSearchRowBasic    
PostingTransactionBalance   Recherche contrainte

Table créée par Adaptive dans la source de données d’intégration, non disponible dans NetSuite. Cette table contient les soldes de fin de période.

PostingTransactionSummary Spécial : getPostingTransactionSummary Recherche contrainte  
ProjectTask ProjectTaskSearchRowBasic Différentiel  
PromotionCode PromotionCodeSearchRowBasic Rechercher  
SalesTaxItem SalesTaxItem Tout obtenir  
Subsidiary SubsidiarySearchRowBasic Rechercher  
SupportCase SupportCaseSearchRowBasic Différentiel  
SupportCasePriority SupportCasePriority Tout obtenir  
SupportCaseStatus SupportCaseStatus Tout obtenir  
SupportIssue IssueSearchRowBasic Rechercher  
SupportSolution SolutionSearchRowBasic Rechercher  
SupportTopic TopicSearchRowBasic Rechercher  
Task TaskSearchRowBasic Rechercher  
TaxGroup TaxGroup Tout obtenir  
TaxType TaxType Tout obtenir  
Timebill TimeBillSearchRowBasic Différentiel  
Transaction TransactionSearchRowBasic Différentiel  
Vendor VendorSearchRowBasic Différentiel  

Tables couramment utilisées dans AI

Les tables suivantes sont directement importables dans l’adaptateur NetSuite :

  • AdaptivePostingTransactionSummary (table de source primaire pour la planification)
  • Compte (mappé aux comptes Adaptive)
  • Classification (mappage facultatif)
  • Client (mappage facultatif)
  • Département (mappage facultatif)
  • Éléments (mappage facultatif)
  • Emplacement (mappage facultatif)
  • Résumé des transactions d’imputation
  • Filiale (généralement mappée aux niveaux Adaptive)

Les tables AdaptivePostingTransactionSummary et PostingTransactionSummary renvoient un delta mensuel, tandis que la table PostingTransactionBalance renvoie les soldes de périodes. Les tables AdaptivePostingTransactionSummary et PostingTransactionSummary prennent en charge les catégories standard (Compte, Période, Filiale, Département, Classe, Emplacement, Élément, Client). Si vous avez besoin de catégories supplémentaires, vous devrez utiliser la table Transaction.

Tables mises à jour différentiellement

Dans la source de données NetSuite actuelle, les tables suivantes sont mises à jour différentiellement :

  • Campaign
  • Customer
  • Employee
  • EntityGroup
  • Item
  • Job
  • Opportunity
  • Partner
  • ProjectTask
  • SupportCase
  • TimeBill
  • Transaction
  • Vendor

En outre, tous les types d’enregistrements personnalisés sont mis à jour différentiellement. Vous ne pouvez pas utiliser la colonne de date différentielle dans votre filtre d’importation de données, pour les tables à mise à jour différentielle. Le système ne vous empêche pas d’essayer de le faire, mais le mécanisme de mise à jour différentielle va échouer.

Vous pouvez limiter la quantité de données importées dans une table différentielle lorsque vous "explorez", c’est-à-dire, modifier les colonnes et les paramètres de filtre. Il existe un mécanisme dans la source de données pour court-circuiter la charge complète des données différentielles.

Le tableau ci-dessous contient toutes les tables différentielles ainsi que leurs colonnes de dates de création et différentielles.

Table Colonne de date différentielle Colonne de date de création
Campaign LastModifiedDate CreatedDate
Customer LastModifiedDate DateCreated
CustomRecord (*) LastModified Created
Employee LastModifiedDate CreatedDate
EntityGroup LastModifiedDate -- Aucun(e) --
Item Modified Created
Job LastModifiedDate DateCreated
Opportunity LastModifiedDate DateCreated
Partner LastModifiedDate DateCreated
ProjectTask LastModifiedDate CreatedDate
SupportCase LastModifiedDate CreatedDate
TimeBill LastModified DateCreated
Transaction LastModifiedDate DateCreated
Vendor LastModifiedDate DateCreated

(*) - Cela s’applique à tous les enregistrements personnalisés.

Si vous spécifiez un filtre Supérieur à, ou Supérieur ou égal à dans la colonne Date de création de votre table, le code ignore l’importation complète et effectue des mises à jour différentielles à partir de la date et de l’heure spécifiées. Ceci est utile pour limiter les données importées, car lorsque vous commencez à explorer une grande table téléchargée de manière différentielle, vous pouvez définir le filtre pour extraire uniquement les données des derniers jours’ (ou semaines’). Ce type de chargement s’exécute très rapidement. Vous pouvez ensuite déterminer les colonnes dont vous avez besoin et les autres conditions de filtre que vous souhaitez utiliser. Une fois que vous êtes satisfait, vous pouvez supprimer le filtre de date de création et redémarrer le chargement complet des données.

Pour certaines tables, il se peut que vous ne souhaitiez jamais d’enregistrements plus anciens qu’une certaine date. Pour ces tables, vous pouvez continuer à utiliser le filtre de date de création avec une valeur appropriée.

Types de données NetSuite pris en charge

Comme les données de NetSuite sont importées dans Intégration, le « type » de ces données doit être mappé à l’un des types de données pris en charge par Integration.

Champs de données NetSuite standard

Pour les champs de données NetSuite standard dans les ‘tables « recherchées », les mappages suivants sont utilisés :

Type de données NetSuite de recherche standard Type de données d’Intégration
SearchColumnStringField Text
SearchColumnSelectField Text
SearchColumnEnumSelectField Text
SearchColumnDoubleField Float
SearchColumnBooleanField Boolean
SearchColumnLongField Integer
SearchColumnTextNumberField Text
SearchColumnDateField DateTime

Champs de données NetSuite standard dans les tables

Pour les champs de données NetSuite standard dans les tables (qui sont toujours récupérées dans leur intégralité), les mappages suivants sont utilisés :

NetSuite Type de données standard Type de données d’Intégration
String Text
RecordRef Text
Double Text
Boolean Float
Long Boolean
System.DateTimeFloat Integer

Champs personnalisés

La source de données NetSuite prend en charge un sous-ensemble des champs personnalisés NetSuite possibles.

Les champs personnalisés sont pris en charge sur les types d’enregistrements suivants :

  • Champs personnalisés CRM
    • CalendarEvent
    • Campaign
    • SupportCase
    • SupportIssue
    • SupportSolution
    • ProjectTask
  • Tâche
  • Champs d’entité personnalisés
    • Contact
    • Client
    • Employé
    • Groupe d’entités
    • Emploi
    • Partenaire
    • Vendeur
  • Champs d’éléments personnalisés
    • Élément
  • Champs de transactions personnalisés
    • Corps de la transaction
    • Colonne de la transaction
    • Élément de la transaction
  • Autres champs personnalisés
    • Compte
    • Classification
    • Département
    • Emplacement
    • Code promotionnel

 Notez que les champs personnalisés doivent avoir l’attribut "STORE VALUE" coché, pour que le champ soit exposé sur l’API NetSuite des services Web.

Types de données de champs personnalisés

Adaptive Integration prend en charge tous les types de données de champ personnalisés NetSuite définis. Toutefois, puisque Intégration n’implante en interne que cinq types de données de base, les types de données de champ personnalisés NetSuite sont mappés sur les types de données Intégration les mieux adaptés. Le tableau suivant illustre ce mappage :

NetSuite Type de données Type de données d’Intégration Commentaire
_checkBox Flottant  
_currency Date et heure  
_date Date et heure  
_decimalNumber Flottant  
_document Texte Référence à un autre enregistrement
_eMailAddress Texte  
_freeFormText Texte  
_help Texte StoreValue n'est pas défini. NetSuite ne permettra pas la récupération de ce type.
_hyperlink Texte  
_image Texte Référence à un autre enregistrement
_inlineHTML Texte  
_integerNumber Entier  
_listRecord Texte Référence à un autre enregistrement
_longText  Texte  
_multipleSelect Texte Référence à zéro ou plusieurs autres enregistrements d’un type donné
_password Texte  
_percent Flottant  
_phoneNumber Texte  
_richText Texte  
_textArea Texte  
_timeOfDay Date et heure  
     

Types de transaction NetSuite

NetSuite Transaction Types

Informations complémentaires

Les sections suivantes décrivent certaines considérations supplémentaires pour accéder aux données NetSuite

Filtre d’importation des données

Chaque champ d’une recherche peut avoir un maximum d’un filtre. Les filtres sont liés ensemble (AND) par NetSuite lorsque la requête de recherche est exécutée.

Seules les tables accessibles via un mécanisme de "recherche" peuvent avoir des filtres de synchronisation définis.

En outre, seuls les champs qui existent dans [TableName]SearchRowBasic et dans [TableName]SearchBasic peuvent être utilisés dans les filtres de synchronisation.

Envoyer une requête à NetSuite directement depuis la zone de stockage

Lors de l’envoi d’une requête à NetSuite directement (au lieu d’envoyer une requête aux enregistrements importés dans la zone de stockage de NetSuite), les expressions de filtre sont limitées aux fonctionnalités exposées par NetSuite via les services Web.

  • Des filtres de colonne simples avec des expressions de comparaison et de logique peuvent être utilisés lors de l’envoi d’une requête à NetSuite.
  • Les filtres peuvent être liés ensemble (AND) mais ne peuvent pas être associés ensemble (OR).
  • Les opérateurs (+, -, /, *, $, ||) ne peuvent pas être utilisés.
  • Les fonctions scalaires ne peuvent pas être utilisées.
  • Les instructions CASE ne peuvent pas être utilisées.
  • Pour filtrer sur une colonne personnalisée, elle doit être marquée pour l’importation.
  • Certains filtres de colonne nécessitent l’activation de fonctionnalités NetSuite spécifiques pour que le filtre fonctionne. 

Certaines tables et certaines colonnes ne prennent pas en charge le filtrage.

Champs exclus

Un certain nombre de champs NetSuite sont exclus de l’importation pour diverses raisons. Le tableau ci-dessous montre certains de ces champs exclus.

NetSuite champ Raisons de l’exclusion
Client : ccExpDate les renseignements relatifs à la carte de crédit sont exclus afin de protéger la confidentialité.
Client : ccInternalId les renseignements relatifs à la carte de crédit sont exclus afin de protéger la confidentialité.
Employé : socialSecurityNumber exclus afin de protéger la confidentialité.
SalesTaxItem : postal une liste délimitée de codes postaux. Ce champ de texte peut être extrêmement long (plus long que la limite de 1 024 caractères par défaut pour un champ de texte) et n’est pas considéré comme particulièrement utile pour les opérations d’intégration.
Transaction : ccExpDate les renseignements relatifs à la carte de crédit sont exclus afin de protéger la confidentialité.

informations sur les champs

Informations supplémentaires sur les champs standard et personnalisés de NetSuite :

  • Les champs de texte sont limités à une taille maximale de 1 024 caractères.
  • Les personnalisations aux champs standard NetSuite ne sont pas prises en charge.
  • Les champs cachés personnalisés sont visibles. (NetSuite les expose à travers ses services web.)
  • Seuls les champs personnalisés NetSuite dont l’attribut "Store Value" est défini, sont importés dans Adaptive Integration.

Recherches enregistrées

Reportez-vous à la section d’Adaptive Integration sur Importation de recherches enregistrées NetSuite pour en savoir plus sur comment configurer une recherche NetSuite enregistrée.

Accéder aux détails, d’Adaptive Planning à NetSuite

Les clients peuvent activer l’accès aux détails des données importées de NetSuite. Des liens d’accès direct seront disponibles sur les feuilles de planification et les rapports pour les données réelles importées de NetSuite. Afin de configurer l’accès aux détails pour NetSuite, vous devez vous assurer que vos identifiants internes sont utilisés dans le cadre du mappage de colonne dans le chargeur de prévision. Vous devrez configurer un système externe NetSuite et le rattacher à un profil utilisé par le chargeur de prévision.

Si vous configurez plusieurs colonnes du côté NetSuite pour mapper une seule dimension de planification, ces colonnes NetSuite doivent être combinées dans la source de données à l’aide d’une colonne SQL de type tuple. Pour en savoir plus, reportez-vous aux sections Integration sur le mappage de colonnes/données et les profils.

Conseils et meilleures pratiques

Meilleure pratique pour configurer Planning pour l’importation des données réelles GL

Pour importer des données réelles GL à l’aide de la table Transaction, il est recommandé de définir les comptes GL dans Planning sur Données réelles par delta mensuel comme indiqué ci-dessous. Avec cette méthode, la planification s’occupe d’accumuler les montants sur la feuille des comptes de bilan.

Meilleure pratique pour traiter les messages d’expiration des délais de NetSuite

Une des erreurs que NetSuite peut renvoyer est :

“Votre recherche a expiré. Si votre recherche inclut l’opérateur « contains » (contient), essayez d’utiliser « hasKeywords » (avec le mot clé) à la place. Si votre recherche inclut des critères de recherche généraux, essayez de restreindre les critères.”

Cette erreur indique que la requête a duré trop longtemps dans NetSuite. Cette condition se produit généralement parce que les critères de filtre dans la demande créeraient un résultat de très grande taille. NetSuite permet environ 3 minutes de traitement pour une demande. (Notez que ceci est la durée autorisée pour la requête de base de données réelles dans NetSuite. Le temps requis pour qu’un résultat soit retourné peut être beaucoup plus long car il est limité par les règles de trafic de NetSuite.)

Il existe plusieurs façons de résoudre cette erreur. Une bonne orientation générale est de s’assurer que la demande générée est aussi spécifique que possible. Par exemple, n’incluez que les types de transaction réellement utilisés par les chargeurs. Une autre façon d’empêcher ou de résoudre cette erreur consiste à utiliser la propriété Durée de remplissage pour le lot. Pour les tables mises à jour de manière différentielle, cette propriété détermine la taille du bloc de mise à jour. La durée de remplissage pour le lot est réglée par défaut sur 168 heures (une semaine). Toutefois, cette valeur peut être trop élevée si vous traitez une demande de données à haute densité. La réduction de cette valeur réduit la taille de la requête individuelle en resserrant le filtre temporel, ce qui peut empêcher ou résoudre cette erreur.

La valeur minimale pour la propriété durée de remplissage pour le lot est d’une heure. Le compromis ici est que vous "grignotez" les données plutôt que de les "avaler", ce qui signifie que beaucoup plus de demandes doivent être envoyées à NetSuite afin de compléter la mise à jour. Par exemple, réduire de 168 à 24 signifie que vous essayez seulement de collecter un jour à la fois, mais cela signifie également sept fois plus de demandes.

Étant donné qu’il n’existe aucun moyen pratique de connaître la densité des données à l’avance, vous pouvez tester vos requêtes et ajuster la propriété durée de remplissage pour le lot, afin de résoudre le problème.

Création de listes individuelles à partir de la table de stockage AllCustomLists

Une table de jointure peut être utilisée pour extraire/filtrer une liste individuelle de la AllCustomLists table de stockage. Par exemple, pour créer une table qui a les membres de la liste appelée Resolutiontime (avec InternalId 19), procédez comme suit :

Dans cette expression de jointure, la valeur InternalId est le « sélecteur » qui sélectionne la liste personnalisée que vous souhaitez.

  • Créez une nouvelle table de jointure. Un nom adapté pour la table serait "CustomList[*]" où [*] est la valeur « Nom » de la liste en cours d’extraction. Donc, pour cet exemple, le nom serait "CustomListResolutiontime".
    • Définissez la table primaire sur "AllCustomLists".
    • Ajoutez une jointure.
      • Table principale : AllCustomLists
      • Table de jointure : AllCustomLists
      • Type : Intérieur
      • Préfixe de colonne : (vide)
      • Expression de jointure : P."InternalId" = '19' et R."InternalId" = '19' et P."ValueId" = R."ValueId"

Dans cette expression de jointure, la valeur InternalId est le « sélecteur » qui sélectionne la liste personnalisée que vous souhaitez.

Ensuite, dans la table de jointure, sélectionnez uniquement les colonnes de la table principale dont vous avez besoin (habituellement juste "Value" et "ValueId").

La capture d’écran suivante capture ce résultat :

Astuce pour la préparation des données de compte et de niveau

Même si les données de compte et de niveau varient d’un client à l’autre, voici quelques exemples montrant comment un concepteur de données peut créer des colonnes SQL dans la zone de stockage, pour préparer les données avant de les charger dans Planning.

Compte :

 CASE WHEN "acct.Number" is null THEN TRIM("acct.Name") ELSE TRIM("acct.Number") END 

Niveau :

 CASE WHEN "Department.Name" is null THEN 'No Department' ELSE TRIM("Department.Name") END || ' ' || "Location.Name"

Astuce pour l’utilisation des règles métier

Le concepteur de données vous permet de créer des règles métier pour un chargement facile. Voici quelques astuces pour gérer les règles relatives aux informations de compte :

  • Les codes de compte doivent être des valeurs numériques, de sorte qu’il soit facile d’ajouter la gamme de comptes GL à inverser.
  • Évitez d’utiliser le caractère de tiret bas pour ce type de compte. Si vous utilisez un tiret bas, vous devrez ajouter manuellement tous les codes de compte dont vous avez besoin pour modifier les signes.
  • Les codes de compte ne doivent pas contenir d’espaces.

Configuration du fuseau horaire

Le fuseau horaire du compte pour la source de données de NetSuite dans Adaptive Integration doit correspondre au fuseau horaire trouvé dans l’interface de NetSuite’s sous Préférences > Fuseau horaire de l’emplacement.

Si les deux ne correspondent pas, effectuez l’une des opérations suivantes :
 

  • Modifiez le fuseau horaire du compte dans Adaptive Integration, pour qu’ils correspondent.
  • Modifiez le paramètre de fuseau horaire dans NetSuite pour l’utilisateur associé à la source de données, pour qu’ils correspondent.

Références externes

La ressource principale de l’API NetSuite est le système d’aide en ligne sur le site de NetSuite http://www.netsuite.com. NetSuite génère un PDF de cette aide en ligne avec chaque version de produit. Une copie récente peut être trouvée en recherchant "(Services Web) Guide SuiteTalk des enregistrements.”

NetSuite a également un groupe d’utilisateurs qui contient des informations utiles sur https://usergroup.netsuite.com/users/index.php. Ceci est un groupe fermé, vous devrez donc postuler pour y avoir accès.