Bonjour,
Je souhaite faire une requête qui me ramène la liste des users Syracuse avec le groupe auquel ils sont rattachés.
Cette information étant stockée dans MongoDB, comment puis-je l'extraire?
Je suis en X3 V11P7.
Merci,
Léa
Bonjour,
Je souhaite faire une requête qui me ramène la liste des users Syracuse avec le groupe auquel ils sont rattachés.
Cette information étant stockée dans MongoDB, comment puis-je l'extraire?
Je suis en X3 V11P7.
Merci,
Léa
Bonjour,
Il n'est pas possible à proprement parler de faire une simple requête pour interroger depuis X3 les bases nosql de Mongo.
Ce qui peut être fait :
1 - Se rapprocher du service SI qui a déjà eu l'occasion de réaliser des développements spécifiques pour certains clients, afin d'obtenir une extraction txt à un instant T du contenu des bases Syracuse.
2 - Passer par des utilitaires de type Studio 3T (ex Robot Mongo) pour faire des extractions des bases, ou cURL pour extraire le contenu des json, mais pareil, cela sera des extractions figées, et je ne vois pas comment plugger cela dans X3.
3 - Passer par un pilote ODBC spécifique à Mongo, pour permettre une connexion directe en SQL (SQL server), ce qui permet de requêter en SQL sur des bases Mongo, et même d'exploiter les requêtes dans le requêteur X3 (déjà testé). Cela reste cependant expérimental, il faut trouver le bon pilote (avec une licence temporaire ou payante), qu'il faut installer et configurer sur le serveur X3. Je peux te transmettre une procédure, mais cela ne peut pas être installé en l'état dans un environnement client sans l'accord de la DSI (qui doit valider et acheter le pilote), et sans avoir fait des tests pour s'assurer que l'environnement est compatible avec le pilote ODBC.
Bref pour le moment, pas de solution simple et fiable.
Merci Thierry.... Je laisse Imane à son triste sort alors
Bonjour Thierry,
La procédure concernant le 3e point peut m’intéresser. Serait-il possible d'en avoir communication ?
D'avance, merci pour votre retour.
Bonjour,
Le pilote qui fonctionne se récupère sur https://www.simba.com/drivers/mongodb-odbc-jdbc/
Le site contient le support nécessaire pour le configurer (mais il faut vraiment tâtonner), sinon laissez moi votre mail pour transmission de la procédure.
Profil complété avec l'e-mail. Merci d'avance.
Comme le principe pourrait intéresser d'autres personnes, je poste la procédure complète ici :
Procédure avec SQL Server
Vérifier la version de la base MongoDB, le pilote Simba ne fonctionne que sur du 3.0 au 3.6 inclus -> regarder la version dans le nom du répertoire des composants X3 : C:\Sage\FreeComponents\X3ERPV11MDBSVR\mongodb-win32-x86_64-2008plus-ssl-3.2.6\bin
Vérifier que le service MongoDB est en cours : dans les services : MongoDB Enterprise for Sage X3 - NODE0
Visual C++ Redistribuable doit être sur le serveur, sinon télécharger le package : https://www.microsoft.com/en-ca/download/details.aspx?id=40784
Connaître le mot de passe administrateur SQL (sa) pour la liaison avec SQL Server.
Récupérer le pilote Simba : https://www.simba.com/drivers/mongodb-odbc-jdbc/
En administrateur, installer le pilote ODBC 64b sur le serveur hébergeant MONGO DB.
Copier la licence Simba dans le répertoire d’installation du pilote, dans \lib (C:\Program Files\Simba MongoDB ODBC Driver\lib)
Configurer le pilote ODBC en créant une nouvelle source (System DSN) :
Sur l’écran principal, renseigner :
Ouvrir l’écran SSL Options, et :
Sur SQL Server via SSMS.
Dans les Objets serveur, Serveurs liés, créer un nouveau serveur lié, et renseigner :
Onglet General :
Onglet Security :
A noter que pour une question de sécurité, il est préférable d’utiliser ou créer un utilisateur dédié à cette connexion (c’est surtout pour ne pas communiquer les identifiants de sa, car de toute manière il n’est pas possible via le pilote ODBC MongoDB d’altérer les données SYRACUSE).
Tester la connexion (clic droit sur le serveur lié et faire Test connexion).
Nota : si vous vouliez connecter la base comme Synonymes dans SQL Server, ce n'est pas fonctionnel car le pilote ODBC n’accepte pas les schemas SQL.
Attention : toutes les fonctions associées au clic droit sur une table MONGO depuis SSMS ne fonctionnent pas. Cela peut donner l'impression que la connexion n'est pas fonctionnelle.
Il faut attaquer les tables manuellement en utilisant le nom du serveur lié [NOMSERVEURLIE].[NOMBASE]..[TABLE]
Exemple d'une requête pour sortir la liste des utilisateurs Syracuse avec des informations issues à la fois des tables Mongo (group, rôle, badge) et des tables X3 (user, fonction).
select distinct
USR_0 as 'X3_USER',
NOMUSR_0 as 'X3_NOM',
PRFFCT_0 as 'X3_PROFIL',
TEXTE_0 as 'X3_Fonction',
US.login as 'Syr_Login',
US.lastName as'Syr_Nom',
-- US.active as 'Syr_actif',
GR.description_default as 'Syr_Groupe',
RO.code as 'Syr_Role',
BA.code as 'Syr_Code Badge',
BA.[title_fr-fr] as 'Syr_Badge'
from [SYRACUSE].[syracuse]..[User] US
left join [SYRACUSE].[syracuse]..[User_groups] USGR on US._id=USGR._id
left join [SYRACUSE].[syracuse]..[Group] GR on USGR._uuid=GR._id
left join [SYRACUSE].[syracuse]..[Role] RO on GR.role__uuid=RO._id
left join [SYRACUSE].[syracuse]..[Role_badges] RB on RB._id=RO._id
left join [SYRACUSE].[syracuse]..[Badge] BA on RB._uuid=BA._id
left join [SEED].AUTILIS on US.login=AUTILIS.LOGIN_0
left join [SEED].AFCTFCT on AUTILIS.PRFFCT_0=AFCTFCT.PRFCOD_0
left join [SEED].ATEXTRA on ATEXTRA.CODFIC_0='AFCTFCT' and LANGUE_0='FRA' and IDENT1_0=PRFCOD_0
order by US.login
Requête dans le Requêteur X3
Ne jamais utiliser le nom de la base dans l'appel des champs, toujours utiliser un alias. Exemple sur la requête précédente, on appelle US.login as 'Syr_Login' et non [SYRACUSE].[syracuse]..[User].login
Certains champs ne pourront pas être appelés via le requêteur (exemple le champ active que le requêteur interprète comme une fonction).
S’assurer qu’on utilise bien la version de Simba adaptée à la base Mongo (32b ou 64b).
Il n’est pas possible d’extraire des colonnes comportant plus de 8000 caractères.
Pour les requêtes lourdes ou lentes, utiliser OPENQUERY :
SELECT * FROM OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');
https://docs.microsoft.com/en-us/sql/t-sql/functions/openquery-transact-sql?view=sql-server-2017
*Community Hub is the new name for Sage City