pluginsGLPI / ocsinventoryng

Plugin ocsinventoryng for GLPI
GNU General Public License v2.0
68 stars 52 forks source link

Location synchronization problem when "As child of" used in GLPI #315

Open freestorm opened 2 years ago

freestorm commented 2 years ago

Hi,

I have some locations in GLPI linked as "Parent-Child" as for example:

[BAT-NORD] > [NORD-1] > [N100] [BAT-NORD] > [NORD-2] > [N201] [BAT-SUD] > [SUD-4] > [S400]

In OCS I created the rooms N100,N201,S400 in a SELECT field type of "Administrative Data" (field_6)

When I synchronize or import computers from OCSInventory-NG, the plugin do not match the location defined in GLPI, and create new location

On attached file, you can see the ID 9 of glpi_locations that was created by ocs-plugin, It should match id 5 and not create a new location entry

When I create a location in GLPI without "As child of" option, the synchronization works between OCS and GLPI

PS: I speak French , you can also write in French :-) Frederic

mysql_data.txt

tsmr commented 2 years ago

ok :)

C'est une volonté d'importer les lieux depuis OCSNG ? avec le paramètre dans "Administrative Data" ?

Car on peut maintenant récupérer le lieu de l'utilisateur pour l'affecter au PC.

Après je vais regarder s'il n'y a pas un bug dans cette configuration.

freestorm commented 2 years ago

J'ai utilisé "Administrative Data" parce que j'ai une synchro entre OCS et un outils tiers d'inventaire de prise réseaux (ce qui me permet de savoir quel PC est sur quelle prise réseaux), du coup je synchronise ce même paramètre dans GLPI.

Comme nous sommes dans une école avec ~900 postes, je ne peut pas trop utiliser le lieu des utilisateurs, car ils ne sont pas assigné à des lieux particulier.

tsmr commented 2 years ago

Le PC est dans l'entité 0 ou dans une autre ?

freestorm commented 2 years ago

Oui il est dans l'entité 0 (j'ai qu'une entité)

tsmr commented 2 years ago

Pour le coup je pense que cela vient du coeur de GLPI car j'utilise une fonction du coeur pour l'import des lieux. A tester peut-être aussi avec le dernier bugfixes ? https://github.com/pluginsGLPI/ocsinventoryng/archive/refs/heads/9.5/bugfixes.zip

freestorm commented 2 years ago

J'ai testé avec le dernier bugfix, ça fait pareil.

Je vais regarder du coté de GLPI, est-ce que vous pouvez me dire quel est la fonction du coeur de GLPI qui est utilisée. J'aimerais jeter un oeil de ce coté , mais n'étant pas un DEV, je galère à rentrer dans le code et a remonter jusqu'a la source .

tsmr commented 2 years ago
inc/ocsadmininfoslink.class.php
$var = Dropdown::importExternal("Location", $var, $entities_id);
freestorm commented 2 years ago

D'après les test que j'ai fait, les lieux sont chaque fois créés lorsque le champs glpi_location.locations_id est différent de '0'

Ce qui arrive lorsque les lieux sont imbriqués en parents-enfants Du coup GLPI ne retrouve pas le lieux demandé et le rajoute.

Je vais essayer de créer un BUG report du coté de GLPI

freestorm commented 2 years ago

Le bug a été corrigé du coté de GLPI pour la version v10 RC3. Il faudrait passer le nom complet en paramètre de la function Dropdown::importExternal

Issue was fixed on the GLPI side for GLPI v10 RC3.
The plugin will need updated to pass the required information as right now it looks like
they only pass the name and entity, and nothing in the extra_params array.

Originally posted by @cconard96 in https://github.com/glpi-project/glpi/issues/11058#issuecomment-1076175104