> For the complete documentation index, see [llms.txt](https://documentation.efalia.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://documentation.efalia.com/connecteurs/connecteurs-generiques/mgdex.md).

# MGDex

## Introduction

MGDex (pour *MultiGest Data Extractor*) est un connecteur Multigest en **lecture seule**, dédié à l'extraction d'un jeu de données depuis la base Multigest vers un outil tiers.

L'accès direct aux données de cette base et la compréhension de son modèle étant complexes, MGDex fonctionne comme un **traducteur** : la requête reçue est analysée puis transformée en requêtes d'interrogation de la base Multigest ; en retour, les données sont réorganisées pour ne présenter que celles qui sont pertinentes, selon un modèle simplifié.

{% hint style="info" %}
MGDex sert également de socle à des déclinaisons métier préparées pour un outil tiers particulier — par exemple le connecteur [PublicCRM](/connecteurs/connecteurs-metiers/publiccrm.md). Cette page couvre le principe générique du connecteur ; le module standard **ScannedDocFlow** est décrit en sous-page.
{% endhint %}

## Principes généraux

MGDex propose deux modes d'interrogation, sélectionnables selon leur pertinence pour le projet :

* **Accès WebService REST direct** — le mode principal. L'outil client appelle un WebService REST exposé par MGDex, qui interroge directement la base Multigest et construit la réponse à la volée.
* **Base MySQL relais** — un mode complémentaire, qui repose sur une base de données intermédiaire. Un automate alimente régulièrement cette base secondaire depuis Multigest (les données peuvent déjà y être retraitées) ; l'outil client s'y connecte alors directement, ou continue de passer par les WebServices REST, qui s'appuient dans ce cas sur la base relais plutôt que sur la base Multigest. L'intérêt de ce mode est de soulager la base principale.

Le format de retour par défaut des WebServices est le **JSON** ; un mode **HTML** est également disponible, principalement utilisé en test pour afficher clairement les réponses. D'autres modes d'interrogation ou formats de retour peuvent être développés à la demande.

Pour chaque WebService, une liste de paramètres obligatoires et facultatifs est définie. Les paramètres facultatifs non renseignés prennent une valeur par défaut : les deux appels suivants sont ainsi équivalents.

```
http://mgdex/bills/status/failed/all
http://mgdex/bills/status/failed/all/50.html
```

## Architecture technique

<figure><img src="/files/iTKeftQFBpCKd0101aqY" alt="Schéma : Multigest alimente la base MySQL de MGDex (1), l&#x27;outil client interroge les WebServices A/B/C exposés par MGDex (2) qui s&#x27;appuient sur cette base (4), ou se connecte directement à la base MySQL (3)"><figcaption><p>Schéma fonctionnel de MGDex</p></figcaption></figure>

MGDex est développé en **PHP**, avec le framework **Symfony 3**. Le système de gestion de base de données utilisé est **MySQL 5.7**.

Le module doit être installé sur un serveur disposant d'un accès HTTP, de PHP 7.1.3 et de MySQL 5.7 — idéalement à côté de Multigest lui-même. L'installation comprend :

* la copie du dossier d'installation ;
* le paramétrage des accès à la base de données ;
* la création des variables d'environnement ;
* l'installation des Virtual Hosts.

Si le mode base relais est utilisé, le module est livré avec un jeu de requêtes de synchronisation ; il faut alors programmer un automate de lancement régulier de ces requêtes pour alimenter la base secondaire.

## Exemple d'accès WebService

Exemple : récupération des factures fournisseurs déjà validées.

```
http://mgdex/bills/completed/{supplier}.{format}
```

* `supplier` (obligatoire) : code du fournisseur.
* `format` (facultatif) : format de retour, `html` ou `json`.

Exemple d'appel : `http://mgdex/bills/completed/FSP45789.json`

Ce WebService retourne toutes les factures dont le processus de validation est entièrement validé, rattachées au compte fournisseur passé en paramètre.

## Points d'attention et bonnes pratiques

* **Choix du mode d'interrogation** : privilégier la base relais lorsque l'outil tiers effectue des appels fréquents ou volumineux, afin de ne pas surcharger la base Multigest principale.
* **Format de retour** : réserver le format HTML aux phases de test ; utiliser le format JSON pour toute intégration informatique.
* MGDex ne modifie jamais les données Multigest : c'est un connecteur strictement en lecture.

## Ressources

* [Module ScannedDocFlow](/connecteurs/connecteurs-generiques/mgdex/module-scanneddocflow.md) — module standard de traçabilité entre bannette de numérisation et armoire d'indexation, préinstallé (mais désactivé par défaut) avec Multigest.
* [PublicCRM](/connecteurs/connecteurs-metiers/publiccrm.md) — déclinaison métier de MGDex pour le connecteur PublicCRM.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://documentation.efalia.com/connecteurs/connecteurs-generiques/mgdex.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
