The article is also available in the link below:
File Storage on BC

Introduction

L’essence des entreprises est d’être capable de tracer tous les documents qu’induisent son business. Le stockage, la sécurisation, sans oublier le partage de documents sont essentiels pour la coordination quotidienne des collaborateurs. De plus, la loi exige certaines règles pour conserver des documents spécifiques.

La gestion des documents dans un ERP est primordiale, avec une association sur ses différentes entités (factures, articles, projets, etc …), tout en répondant à différents challenges :

  • Volume : certains secteurs, à l’image de la mode, nécessitent le stockage de croquis et photos volumineux et d’autres comme l’industrie des plans fonctionnels (dessins techniques ou autres). La quantité de données à conserver est alors volumineuse.
  • Accessibilité et disponibilité : les documents doivent être accessibles et disponibles facilement et rapidement. La recherche et l’accès à un document doivent être succincts et intuitifs pour un utilisateur.
  • Sécurité et confidentialité : l’accès aux documents stockés doit être régulé et limité avec des droits de consultation en fonction de leur sensibilité et des niveaux de permissions accordés.
  • Conformité : des directives sont imposées en fonction des régions, sur le stockage des documents, leur accès, leur intégrité et finalement leur droit à la modification.

Évolution de la solution, de Nav à nos jours

Lorsque Dynamics Nav était une solution locale, le stockage de fichiers se basait sur 2 technologies : conservation sur la base de données et/ou dans le système de fichier local. Cela reste le cas pour les installations en local de Business Central. Ces configurations ont relativement peu de contraintes en termes de capacité de la base de données ou de celle du serveur de fichiers.

Les protocoles Web permettent l’échange entre les 2 systèmes, et il reste possible d’utiliser une solution cloud de stockage.

Le passage au SaaS instaure de nouvelles contraintes sur le stockage de données, Business Central Online n’ayant pas nativement accès à des fichiers système locaux. Dans ce contexte, les solutions Cloud (protocole Http) telles que OneDrive, SharePoint, Azure Storage, ou d’autres, s’avèrent être les meilleures solutions. Il reste évidemment possible de stocker des fichiers dans la base de données.

Stockage dans la base de données de l’ERP

Un espace mémoire dédié est réservé pour le stockage de fichiers binaires volumineux (images ou autres) grâce aux types de données de base dans SQL. Les types Blob et media-set permettent le stockage de fichiers directement dans la base de données de Business Central.

Par défaut, il s’agit de la solution standard utilisée par Microsoft. Elle peut être utilisée lors de l’ajout de pièces jointes aux entités de l’ERP, ou à celui d’images au niveau de l’article.

Les principaux freins à cette solution résident dans la limite de stockage proposée par Microsoft, 80 Go. De surcroit, augmenter la capacité peut être coûteux. Ajouter des fichiers directement dans la base de données n’est donc pas recommandé, car la performance de la base de données peut en être affectée.

Microsoft propose une base de 80 Go par environnement, auxquels on peut ajouter 3 Go par utilisateur de licence Premium et 2 par licence Essentials. Vous obtenez alors la capacité standard des environnements de votre tenant.

Ajouter de l’espace supplémentaire coûte environ 10 $ par mois, par tranche de 1 Go, ou 100 Go pour environ 500 $ par mois.

Stockage OneDrive

Cette variante utilise OneDrive, sans autres éléments sur les environnements en ligne. Une application d’entreprise sur Microsoft ENTRA ID est nécessaire pour gérer l’authentification pour une installation en local (https://learn.microsoft.com/en-us/dynamics365/business-central/admin-onedrive-integration-onpremises).

Une fois l’initialisation OneDrive terminée, son paramétrage peut être effectué :

Démo du stockage de fichier sur la carte d’un article :

Le fichier est alors disponible sur le OneDrive :

Les inconvénients de cette solution sont multiples. Une action de l’utilisateur est nécessaire pour stocker le fichier, et pour le partager. Surtout, le fichier est conservé sur un OneDrive personnel et privé, de la personne qui l’a stocké. Des problèmes de confidentialité, d’accessibilité et de gestion centralisée sont alors évidents.

Stockage SharePoint

Contrairement aux deux solutions précédentes, le stockage dans SharePoint nécessite un développement spécifique en plus d’une application d’entreprise dans Azure ENTRA ID pour gérer l’authentification de Business Central avec SharePoint.

Voici un exemple de l’application d’entreprise :

Les principaux paramètres pour cette application d’entreprise sont :

Développement spécifique :

Le développement spécifique repose sur une connexion API REST entre le système ERP et la plateforme SharePoint.
https://learn.microsoft.com/en-us/dynamics365-release-plan/2022wave2/smb/dynamics365-business-central/use-sharepoint-module-system-application-build-integrations-between-business-central-sharepoint
Ce développement a été facilité par un framework introduit dans l’ERP depuis la version 2022 wave 2 (BC21), disponible en open source sur GitHub.
https://github.com/microsoft/BCApps/tree/main/src/System%20Application/App

Il s’agit de quelques lignes de codes, incluant l’usage d’objets que sont “SharePoint Client” (CU), “SharePoint Folder » (REC) et “SharePoint File » (REC)  pour une intégration rapide avec SharePoint.

Axians BMS a développé un exemple utilisant la même interface utilisateur que les documents joints. Cette fonctionnalité empêche le fichier d’être sauvegardé dans la base de données.

Structure du répertoire et règles de nommage des fichiers :

Pour télécharger des fichiers sur SharePoint, un site SharePoint doit d’abord être créé. Lorsqu’un fichier est téléchargé sur SharePoint depuis Business Central, le dossier de dépôt sera automatiquement créé s’il n’existe pas déjà.

Structure du répertoire :

  • Company (Nom de l’entreprise)
    • Customer
      • Record No. (Numéro de client)
        • File 1 (Le nom du fichier est construit comme suit : <ID de la table source> <-> <nom original du fichier>, ex. 36-customerorder.pdf)
        • File 2
    • Vendor
      • Record No. (Numéro de fournisseur)
        • File 1
        • File 2
    • Project
      • Record No. (Numéro de projet)
        • File 1
        • File 2
    • Autre Master Data
      • Record No.
        • File 1
        • File 2

Les données transactionnelles telles que les commandes, factures, notes de crédit, etc., seront stockées dans le dossier client ou fournisseur, selon le module concerné (achats ou ventes).

Le nommage des fichiers suit la structure suivante :

<table Id>-<record No.>-<Original file name>.pdf
Ex.
18-10000-contratclient.pdf (fichier attaché depuis la fiche client, client 10000)
36-SO0000001-commandeclient.pdf (fichier attaché depuis le document de commande de vente).

Diagramme de développement :

Dans notre exemple, pour utiliser le stockage SharePoint, une fois le site SharePoint créé, il faut indiquer le type de stockage (sélectionner SharePoint) ainsi que l’URL du site dans le tableau des informations de l’entreprise. :

On présente ensuite le fonctionnement du dépôt de fichier pour l’exemple d’une carte correspondant à un client :

Le fichier est ainsi stocké sur le site SharePoint :

L’avantage de cette approche est d’avoir un emplacement centralisé pour la gestion des fichiers avec une structure simple et facile à comprendre. L’inconvénient est de devoir répliquer les règles de gestion et les exigences légales sur cette plateforme.

Compte de stockage Azure

Microsoft propose une solution de stockage de données basée sur le cloud.

Azure Blob storage

C’est une solution de stockage de masse pour les données non structurées (sans modèle de données défini), offrant des performances optimales à un coût relativement bas. Azure Blob storage ne sera pas abordé dans ce document; il est similaire à Azure Share File storage.

Azure File Share

C’est un système de fichiers cloud classique, compatible avec les protocoles NFS et SMB. Les données sont structurées et peuvent être consultées depuis un client web ou même synchronisées avec un explorateur de fichiers conventionnel. Cette solution est moins puissante et plus coûteuse qu’Azure Blob.

Pour mettre en œuvre cette solution, il faut créer un compte de stockage Azure et une instance Azure File share :

Développement spécifique :

Le développement est identique à celui pour le stockage Sharepoint. Il est basé sur une connexion API REST entre le système ERP et la plateforme SharePoint. Ce développement a été facilité par un framework introduit dans l’ERP depuis la version 2022 wave 2(BC21) en open source et disponible sur GitHub.

Il s’agit de quelques lignes de codes, incluant cette fois ci l’usage d’objets que sont “AFS file Client” (CU) et “AFS Directory Content » (REC) pour une intégration rapide avec SharePoint.

Nous avons développé un exemple utilisant la même interface utilisateur que les « Attached Documents », cette fonctionnalité empêche le fichier d’être sauvegardé dans la base de données. La structure des répertoires et les noms de fichiers sont les mêmes que dans la solution SharePoint (ci-dessus).

Diagramme de développement :

On retrouve aussi sur les informations de l’entreprise avec les identifiants pour ce nouveau type de stockage :

  • Compte de stockage Azure : suivre le format compte/nom du partage de fichiers Azure
  • Chaîne de connexion SaaS Azure File Share : récupération de la clé à partir du stockage Azure (signature partagée)

Le dépôt du fichier peut être une nouvelle fois effectué sur une carte correspondant à un client :

Le fichier est alors disponible sur Azure File Share :

L’avantage de cette approche est d’avoir un emplacement centralisé pour la gestion des fichiers, avec une structure simple et facile à comprendre. Elle intègre surtout des fonctions permettant de respecter le principe de la piste d’audit, correspondant à un stockage à valeur probante.

Que dit la loi sur le stockage des fichiers électroniques ? Exemples

La législation nationale impose certaines règles en matière de stockage des fichiers. Ces règles sont formalisées dans des textes légaux et des normes ISO.

Les règles couvrant la sécurité, la localisation des données et le cryptage des échanges sont parmi les références de l’ISO27001. La plateforme Azure est conforme à cette norme. Elle respecte également d’autres législations européennes telles que le RGPD ou des règles locales.
https://learn.microsoft.com/fr-fr/azure/governance/policy/samples/iso-27001
https://learn.microsoft.com/en-us/azure/compliance/

En réponse à des demandes spécifiques concernant la légalité du stockage des fichiers, Microsoft a introduit la notion de stockage immuable. Il permet aux utilisateurs de stocker des données critiques dans un état WORM (Write Once, Read Many). Une fois dans un état WORM, les données ne peuvent pas être modifiées ni supprimées pendant une période spécifiée par l’utilisateur. En configurant des politiques d’immutabilité pour les données de type blob, vous pouvez protéger vos données contre les réécritures et les suppressions.
https://learn.microsoft.com/en-us/azure/storage/blobs/immutable-storage-overview

D’autres textes de loi en France complètent les législations citées précédemment. La définition du stockage à valeur probante, ou piste d’audit fiable, suit les règles suivantes :

  • Authenticité du document archivé. Il doit ressembler en tous points à l’original sous format papier. Il est nécessaire de savoir quand il a été créé, et par qui.
  • Intégrité du document archivé . Il doit être identique à l’original sans être altéré, modifié ni déformé.
  • Intelligibilité du document archivé. Il doit rester lisible à travers le temps grâce à un format standard (PDF ou PDF A/3).

https://bofip.impots.gouv.fr/bofip/8865-PGP.html/identifiant%3DBOI-TVA-DECLA-30-20-30-20-20180207
https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000034307622

En résumé, Azure Share File est l’unique solution conforme à toutes les règles ci-dessus.

Résumé des solutions – Conclusions

 

No Solution Coût Avantages Inconvénients
1 Base de données ERP Lorsqu’on dépasse la capacité de stockage de 80 Go (plus celle accordée grâce aux licences), le tarif varie selon le volume et est très couteux Solution ERP standard, aucun développement requis Les volumes de la base de données peuvent augmenter rapidement, générant un coût si le volume initial donné par Microsoft est dépassé, ainsi qu’un impact sur les performances du système.
Impossible d’implémenter des règles de gestion complexes.
2 OneDrive Inclus dans la gestion de la capacité de stockage d’Office 365 Solution ERP standard, aucun développement requis Nécessite une action de l’utilisateur pour stocker et partager le fichier.
Duplication du stockage en base de données.
Les fichiers sont stockés dans l’espace personnel de l’utilisateur.
Impossible d’appliquer des règles de gestion.
3 SharePoint Inclus dans la gestion de la capacité de stockage d’Office 365 Permet une gestion centralisée des fichiers sans les stocker dans la base de données Nécessite un développement spécifique, même s’il n’est pas complexe.
Impossible d’implémenter des exigences légales.
4 Azure Storage (Azure Share File) Permet une gestion centralisée des fichiers sans les stocker dans la base de données.
Azure storage respecte les exigences légales en matière de stockage de fichiers et d’autres règles complexes peuvent être mises en œuvre sans développement supplémentaire.
Il est possible de synchroniser l’espace avec un serveur ou un ordinateur local (explorateur de fichiers Windows).
Nécessite un développement spécifique, même s’il n’est pas complexe.

 Améliorations possibles :

Business Central repose sur les groupes de sécurité Azure (expliqués dans un précédent article : Gestion Cloud des permissions par Microsoft via les Security Groups). Dans certains contextes, il serait alors utile, lors de la création de répertoires dans Azure File Share, de répliquer les permissions d’accès à ces dossiers depuis l’ERP.

Sources complètes du projet sur GitHub : GitHub Sources

Bonus, affichage PDF dans le client Business Central

Pour éviter de télécharger systématiquement des fichiers (exclusivement des PDF) afin de visualiser leur contenu, une FactBox spécifique et une page dédiée pour une vue plus large ont été ajoutées. L’affichage est géré par un controlAdd-in basé sur des bibliothèques JS (open source).
https://mozilla.github.io/pdf.js/
https://cdnjs.com/libraries/pdf.js
https://jsfiddle.net/pdfjs/wagvs9Lf/ (pour comprendre le fonctionnement de la bibliothèque et la tester)

Voici des captures d’écran de l’affichage PDF sur Business Central à partir de la factbox puis sur la page élargie :