> 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-metiers/iodas.md).

# Iodas

## Introduction

Le connecteur Iodas ↔ Efalia Doc permet à l'application Iodas d'utiliser Efalia Doc comme un espace de stockage centralisé et piloté directement depuis Iodas. Il permet de créer des dossiers procédures, des dossiers individus, ainsi que de publier des documents métiers dans la GED, tout en conservant le pilotage métier côté Iodas.

Cette page s'adresse aux chefs de projet techniques en charge de l'installation du connecteur chez un client, et détaille les prérequis, les étapes et le paramétrage nécessaires à sa mise en œuvre.

{% hint style="info" %}
Le connecteur existe aussi en variante « chapeau », capable de router vers Efalia Doc ou vers Multigest selon le métier (MDPH, ASE, etc.). Cette page couvre la variante Efalia Doc.
{% endhint %}

## Architecture du connecteur

### Les deux composants principaux

**Composant Iodas Java**

* Deux fichiers `.jar` et leurs fichiers de configuration, développés par Efalia et installés sur la plateforme Iodas par Nexpublica (éditeur d'Iodas).
* Synchronise et pilote la gestion des dossiers (procédures, individus, dossiers transverses) dans Efalia Doc : vérifie l'existence des dossiers, crée les nouveaux dossiers, met à jour leur statut.
* Permet aux utilisateurs Iodas de naviguer directement depuis Iodas vers le bon dossier dans Efalia Doc.
* Fonctionnement : Iodas appelle les méthodes génériques du composant, qui appelle à son tour les API REST d'Efalia Doc.

**Module Iodas Utilities**

* Module déployé sur la plateforme Efalia Utilities.
* Gère la communication documentaire entre Iodas et Efalia Doc : reçoit les documents métiers générés par Iodas (contenant des balises et une syntaxe spécifique), assure le découpage automatique si besoin, le classement dans la GED et l'alimentation des métadonnées.
* Iodas envoie les documents via SFTP, FTPS ou FTP (SFTP obligatoire si Efalia Doc est en SaaS, avec filtrage IP).

{% hint style="info" %}
Le module Iodas Utilities s'appuie sur le mécanisme générique [Balises](/connecteurs/connecteurs-generiques/balises.md) d'Efalia Utilities pour interpréter les documents déposés par Iodas.
{% endhint %}

### Synthèse des flux techniques

| Flux                          | Source                 | Destination            | Protocole / port        | Contenu                             |
| ----------------------------- | ---------------------- | ---------------------- | ----------------------- | ----------------------------------- |
| Gestion des dossiers          | Composant Iodas Java   | Efalia Doc (API)       | REST (JSON) / port 1202 | Opérations sur dossiers, navigation |
| Gestion des documents métiers | Iodas                  | Module Iodas Utilities | SFTP/FTPS/FTP           | Documents PDF avec balises          |
| Gestion des documents métiers | Module Iodas Utilities | Efalia Doc             | REST (JSON) / port 1202 | Découpage, classement, métadonnées  |

## Pré-requis techniques et plan de classement type

### Versions logicielles requises

* **Efalia Doc** : dernière version en cours, au moins Canari-35.
* **Efalia Utilities** : dernière version en cours, au moins Canari-2.
* **Iodas** : JDK 8 minimum.

### Droits et accès nécessaires

* **Efalia Doc** : accès administrateur, fonctionnalité ID Externe activée au niveau du QG.
* **Efalia Utilities** : accès SSH à la machine pour modifier le fichier de configuration du module Iodas Utilities.
* **Iodas** : l'installation du composant Iodas Java est réalisée par Nexpublica — le jar et sa documentation doivent leur être transmis.

### Plan de classement minimal dans Efalia Doc

Le connecteur s'appuie sur la structure des armoires et des dossiers d'Efalia Doc :

* une armoire correspond à un domaine métier — c'est son ID externe qui permet au connecteur de retrouver les bons dossiers ;
* pour chaque domaine, trois types de dossiers sont créés dans l'armoire :
  * **Dossier Individu** — ID externe `DDID`
  * **Dossier Procédure** — ID externe `DDP`
  * **Dossier Transverse** (optionnel) — ID externe `DDIT`

Une armoire par métier (ex. une armoire MDPH pour les dossiers MDPH, une armoire ASE pour l'ASE, etc.).

{% hint style="warning" %}
🚧 À valider avec l'équipe projet : le plan de classement exact (structure JSON à importer dans Efalia Doc) doit être fourni au cas par cas — il n'existe pas de modèle générique livré avec cette documentation.
{% endhint %}

Si un filtre d'accès est nécessaire, le composant Iodas Java recherche le champ `Permi` — voir [Filtres d'accès](/connecteurs/connecteurs-metiers/iodas/filtres-d-acces.md) pour le détail du fonctionnement.

### Sécurité et flux réseau

* **Efalia Utilities → Efalia Doc** et **Iodas → Efalia Doc** : API REST JSON sur le port 1202 (HTTPS).
* **Iodas → Efalia Utilities** : dépôt de fichiers via SFTP, FTPS ou FTP. En SaaS, SFTP est obligatoire avec filtrage d'adresse IP.

## Installation du connecteur

{% stepper %}
{% step %}

## Préparation dans Efalia Doc

1. **Importer le plan de classement** fourni (structure DDID, DDP, DDIT si besoin).
2. **Créer les comptes techniques** :
   * compte technique **Iodas** : doit pouvoir consulter, ajouter et modifier les dossiers DDID, DDP (et DDIT si utilisé) ; doit être administrateur si des filtres d'accès doivent être gérés (recommandé en attendant la notion d'administration fonctionnelle) ;
   * compte technique **Utilities** : peut consulter et créer DDID et DDP, peut créer des documents sur les espaces définis par le plan de classement, doit avoir accès à la bannette de rejet.
3. **Créer la bannette de rejet**, obligatoire pour gérer les erreurs lors de l'envoi de fichiers par Utilities. Vérifier que le compte Utilities y a bien accès.
4. **(Optionnel) Configurer les filtres d'accès** : créer un filtre d'accès `Permi` et l'associer au gabarit de dossier DDP dans l'administration.
   {% endstep %}

{% step %}

## Installation du composant Iodas Java

Le fichier jar est fourni par Efalia. Le déploiement sur la plateforme Iodas est réalisé par Nexpublica, selon la procédure d'installation qu'ils fournissent.
{% endstep %}

{% step %}

## Configuration du composant Iodas Java

Deux volets de configuration sont nécessaires : le fichier `doc.properties` côté connecteur, et les données transmises par Iodas.

**Fichier `doc.properties`**

| Propriété               | Description                                                                   |
| ----------------------- | ----------------------------------------------------------------------------- |
| `doc.debug`             | Active le mode debug (`true`/`false`).                                        |
| `doc.server`            | Adresse de l'API Efalia Doc (ex. `https://serveur-mgx:1202`).                 |
| `doc.login`             | Identifiant du compte technique Efalia Doc.                                   |
| `doc.password`          | Mot de passe de ce compte technique.                                          |
| `doc.ddpNbIndiMax`      | Nombre maximum d'individus connus dans l'alimentation du DDP (entre 0 et 10). |
| `ftp.address`           | Adresse du serveur FTP/SFTP de dépôt des fichiers Iodas.                      |
| `ftp.port`              | Port du serveur FTP/SFTP.                                                     |
| `ftp.user`              | Identifiant FTP/SFTP.                                                         |
| `ftp.password`          | Mot de passe FTP/SFTP (remplacé si clé privée utilisée).                      |
| `ftp.protocol`          | `FTPS` ou `SFTP`.                                                             |
| `ftp.dir`               | Dossier racine des échanges sur le serveur FTP/SFTP.                          |
| `ftp.dir.bureautique`   | Dossier spécifique aux fichiers bureautiques.                                 |
| `ftp.dir.historisation` | Dossier d'historisation (archives, logs).                                     |
| `sftp.privateKey`       | Chemin vers la clé privée SSH pour SFTP.                                      |
| `sftp.passphrase`       | Passphrase de la clé privée SSH si nécessaire.                                |
| `sftp.knownHosts`       | Chemin vers le fichier `known_hosts`.                                         |
| `sftp.hostKeyChecking`  | `O` (vérification activée, par défaut) ou `N` (désactivée).                   |
| `logfile.level`         | Niveau de log : `ERROR`, `WARN`, `INFO` (défaut), `DEBUG` ou `TRACE`.         |

{% hint style="danger" %}
Ne jamais désactiver `sftp.hostKeyChecking` (`N`) en production.
{% endhint %}

**Données Iodas**

Le connecteur attend un domaine sous la forme `{id_externe_domaine}_{id_externe_dossier}`, où `id_externe_dossier` vaut `DDID`, `DDP` ou `DDIT`. Se référer à la documentation Iodas pour configurer correctement les champs correspondants côté Iodas.
{% endstep %}

{% step %}

## Installation et configuration du module Iodas Utilities

1. Se connecter au bastion Efalia, puis à la machine cible.
2. Vérifier l'existence des dossiers SFTP :

   ```
   ls -lR /jail_sftp/
   ```
3. Éditer le fichier de configuration :

   ```
   cd /home/efalia/utilities/current/connecteurs/balises
   sudo vi config.php
   ```
4. Exemple de configuration (champs à adapter en vert ci-dessous) :

   ```php
   return [
       "name" => "efaliaDocBalises",
       "apiURL" => "https://connectorhub-doc.efalia.net:1202",
       "efaliaDocUrl" => "https://connectorhub-doc.efalia.net",
       "authenticationMode" => "login/password",
       "userLogin" => "#ACOMPLETER",
       "userPassword" => "#ACOMPLETER",
       "inputFolder" => "workspace/input",
       "outputFolder" => "workspace/output",
       "temporaryFolder" => "tmpdir",
       "archiveFolder" => "archive",
       "csvFileName" => "file.csv",
       "archiveInputs" => true,
       "archiveOutputs" => true,
       "cleanFolders" => true,
       "armoireGabaritSeparator" => '_',
       "bannette_tache_automatique" => "#ACOMPLETER",
       "bannette_de_rejet" => "#ACOMPLETER",
       "allowBatchProcess" => true,
       "emailHost" => "#ACOMPLETER",
       "emailPort" => 2525,
       "emailUser" => "#ACOMPLETER",
       "emailPassword" => "#ACOMPLETER",
       "emailExpd" => "#ACOMPLETER",
       "emailDestAddress" => "#ACOMPLETER",
       "emailDestName" => "#ACOMPLETER",
       "reportStatus" => 2,
       "sftpFolders" => ['/jail_sftp/sftp_generic/files/', '/jail_sftp/sftp_iodas/files/'],
       "logs" => [
           "path" => "/logs",
           "journal" => 2,
           "debug" => true,
           "sftp" => true,
       ]
   ];
   ```

   * `apiURL` : URL de l'API REST Efalia Doc, port inclus.
   * `efaliaDocUrl` : URL web d'Efalia Doc (utilisée pour générer des liens directs vers la GED dans le rapport d'erreur).
   * `userLogin` / `userPassword` : identifiants du compte technique Efalia Doc.
   * `bannette_tache_automatique` : non utilisé pour Iodas (sert au versement différé du connecteur Solis) — laisser vide.
   * `bannette_de_rejet` : ID externe de la bannette de rejet.
   * `emailHost`/`emailPort`/`emailUser`/`emailPassword`/`emailExpd`/`emailDestAddress`/`emailDestName` : paramètres SMTP pour les notifications.
   * `sftpFolders` : chemins des dossiers SFTP surveillés pour les dépôts de fichiers Iodas.
5. Si Efalia Doc est en SaaS, activer le SFTP avec filtrage IP (demande à faire au service Exploitation).
   {% endstep %}
   {% endstepper %}

## Vérifications post-installation

* Plan de classement (DDID, DDP, DDIT) en place et conforme à l'étude du projet.
* Droits des comptes techniques (Iodas et Utilities) vérifiés ; création/modification d'un dossier testée pour chaque compte.
* Bannette de rejet accessible au compte Utilities.
* Test API : création d'un dossier (DDID ou DDP) depuis Iodas, remontée immédiate vérifiée dans Efalia Doc.
* Test de navigation depuis Iodas vers un dossier de la GED.
* Test de dépôt d'un document depuis Iodas via SFTP/FTPS/FTP : réception, classement et alimentation des métadonnées vérifiés.
* Test de rejet : un document en erreur atterrit bien dans la bannette de rejet.

## Glossaire

| Terme                  | Définition                                                                         |
| ---------------------- | ---------------------------------------------------------------------------------- |
| DDID                   | Dossier Individu dans Efalia Doc                                                   |
| DDP                    | Dossier Procédure dans Efalia Doc                                                  |
| DDIT                   | Dossier Transverse (optionnel)                                                     |
| Bannette de rejet      | Dossier de stockage des documents en erreur                                        |
| Composant Iodas Java   | Connecteur Java développé par Efalia, installé sur Iodas                           |
| Module Iodas Utilities | Module déployé sur Efalia Utilities pour gérer l'intégration des documents métiers |
| Compte technique       | Utilisateur dédié utilisé par le connecteur pour accéder à la GED via API          |


---

# 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-metiers/iodas.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.
