Methodologie de gestion du risque performance dans le cadre des projets d’implémentation de Business Central
Dans le monde en constante évolution des systèmes ERP, assurer des performances optimales lors de l’implémentation de Business Central est un défi crucial, surtout dans les projets d’envergure avec un grand nombre d’utilisateurs. Les performances affectent directement l’efficacité des processus métiers, et ce risque est amplifié lorsque Business Central est customisé.
Vous êtes Chef de projet Business Central ou encore architection solution ? Je vais essayer de proposer des solutions à des problèmatiques que vous rencontrez chez vos clients ou en interne en tant que responsable.
Mon expérience chez Cosmo Consult et les situations différentes rencontrées m’ont amené à développer une méthode en 4 parties donnant des gains signficatifs en terme de charges, de risques, de non régressions, d’anticipation, d’impacts sur les équipes projets et à chaque étape expliquer l’impact sur la performance intrinsèque.
Cet article propose le détail de cette méthode pour sécuriser les performances lors de chaque phase d’un projet d’implémentation.
Elle se compose de plusieurs étapes :
- Mise en place d’un infrastructure afin de lancer les tests de performances de manière automatique
- Monitorer la phase de développement avec un ensemble de tests standards
- Développer des tests de performance représentatifs de l’activité futur de l’entreprise sur Business Central
- Tests de performances finaux afin de valider la solution
Mise en place de l’infrastructure afin de lancer les tests de performances de manière automatique
Le lancement des tests de performance sur un sandbox Business Central peut être facilement automatisé avec un pipeline Azure Devops.
Ci dessous le schéma de principe :

ci dessous un exemple de code yaml sur un pipeline Devops :
trigger: none
schedules:
- cron: "0 1 * * *"
displayName: Daily midnight build
branches:
include:
- master
always: true
variables:
- group: 'PerformanceTestingAutomate'
jobs:
- job: RunPerformance
pool:
vmImage: 'windows-latest'
steps:
- task: PowerShell@2
displayName: 'Run Performance Test on Target Sandbox "$(SandboxName)"'
inputs:
targetType: filePath
filePath: $(System.DefaultWorkingDirectory)/RunBCPTTests.ps1
arguments: '-Environment "$(Environment)" -AuthorizationType "$(AuthorizationType)" -Credential ([PSCredential]::new("$(Username)", (ConvertTo-SecureString -String "$(Password)" -AsPlainText -Force))) -SandboxName "$(SandboxName)" -TestRunnerPage "$(TestRunnerPage)" -SuiteCode "$(SuiteCode)" -BCPTTestRunnerInternalFolderPath $(System.DefaultWorkingDirectory)/"$(BCPTTestRunnerInternalFolderPath)" -ClientId "$(ClientId)"'
Définition des variables :
| Nom | Définition |
|---|---|
| Environment | PROD pour BC online, sinon OnPrem |
| AuthorizationType | type d’authorisation utilisé pour se connecter à BC |
| Username | Utilisateur Business Central |
| Password | Mot de passe de l’utilisateur Business Central |
| SandboxName | Nom de la sandbox à utiliser |
| SuiteCode | Suite de test de performance à lancer |
| BCPTTestRunnerInternalFolderPath | Dossier contenant les scripts BCPT dans votre repo |
| ClientId | ClientId de l’app mise en place sur l’AD |
Il est aussi possible de lancer des tests de performance en utilisant Al-Go
L’intérêt de la mise en place de l’automatisation : les tests sont effectués régulièrement sans que vous ayez à vous en préoccuper.
Monitoring pendant la phase de développement
Lors de cette phase, le principal objectif est la détection de dégradations des performances dues à la mise en place de développements spécifiques sur Business Central. Le principe est d’utiliser l’outil de test de performance BCPT fourni par Microsoft afin de faire les tests de manière hebdomadaire ou même quotidienne. Périodiquement, les scénarios de test fourni avec l’outil BCPT sont lancés sur les environnements de test. Une analyse des résultats est effectuée régulièrement afin de déterminer si les développements mis en place ont un impact sur les performances. Si des impacts performances significatives sont détectés, il est préférable d’effectuer des ajustements immédiatement.
Ci dessous un exemple de résultats en utilisant les log BCPT extrait vers Excel:

Dans cet exemple on peux voir des augmentations des volumes de requêtes SQL sur certains scénarios qui ont nécessités des ajustements.
Depuis quelques temps, il est aussi possible de faire ce type d’analyse directement dans les rapports PowerBi fourni par Microsoft pour analyser la télémétrie.
Source
En parallèle de cela, il est nécessaire de commencer à déterminer les scénarios de performance pouvant représenter l’activité réelle des utilisateurs sur Business Central ainsi que les volumétries pressenties. (Exemple : nombre de client, volume du carnet de commande, nombre d’expéditions et factures enregistrées par jour). A la fin de cette analyse les caractéristiques du système cible sont identifiées. Exemples ci dessous (non exaustif) :
| Type Données | Volumes |
|---|---|
| Client | 10000 |
| Entête de commande vente | 20000 |
| Ligne de vente | 400000 |
| Processus | Nombre d’utilisateurs de parallèle |
|---|---|
| Saisir des demandes client de 10 lignes avec des articles de types aléatoire | 30 |
| Calculer les contenus des demandes de vente | 1 fois toutes les 5 minutes |
| Transformer les demandes de vente en commande et créer les expéditions entrepôt correspondant | 30 |
| Executer les processus d’expédition | 20 |
| Importer des commandes de vente | 1 fois toutes les 5 minutes |
En fin de phase de développement, nous avons un ensemble de développement représentatif du système cible ainsi qu’un framework de test automatisés afin de tester ces développements (c’est une pratique préférable). Ces tests automatisés peuvent servir de base au développement des tests de performance. En effet, les tests de performances sont très proches des tests unitaires qui peuvent être développés pour valider le fonctionnement d’un développement de manière automatique. A ce stade il est possible de démarrer le développement des tests de performance finaux.
Développement des tests de performance:
Sur la base des scénarios de performance défini, l’équipe développe les codeunits afin d’exécuter les scénarios cibles sur Business Central. Il peut être aussi nécessaire de developper des processus afin de générer le volume des données nécessaire à l’exécution des tests de performance. En effet, un carnet de commande avec 5 lignes n’est pas la même chose qu’un carnet de commande de 200000 lignes en terme de performance. Ce type de volumétrie a forcément un impact. Comme je l’ai dit précédemment, les tests de performances sont très proche des tests unitaires. Par conséquent, il est fortement probable d’avoir besoin des libraires de test fournies par Microsoft. Malheureusement, à l’heure où j’écris cet article il n’est pas possible d’installer les librairies de test standard sur une sandbox Business Central. La solution est de mettre les librairies nécessaire aux tests de performance sur la plage d’objet 50000..99999.
Exécution des tests de performance finaux
Une fois les tests de performance développés et les volumétries de données cibles présentent sur Business Central, vous pouvez lancer les tests de performance. Ces tests vont vous permettre de valider l’ensemble de la solution sur le périmètre définit en simulant les activités utilisateurs pendant 30 à 60 minutes. Ces tests vont vous permettre de mesurer les performances des flux métiers ainsi que les cas possibles de deadlock sans avoir besoin de mobiliser l’ensemble des utilisateurs.
Ci dessous quelques exemples de résultat présentant les volumes de deadlock trouvé ainsi que les temps d’exécution:


Ces résultats peuvent servir de base à l’optimisation des processus spécifiques développés sur Business Central en amont de sa mise en place et donc sans l’urgent et le stress d’une souci de performance sur un environnement de production.
Conclusion
Cette méthodologie, en tirant parti des outils modernes, minimise les tests manuels et les risques lors du déploiement final de Business Central. Elle garantit une mise en œuvre sécurisée et performante, essentielle dans l’environnement dynamique d’aujourd’hui. Par ailleurs elle permet d’agir sur 3 axes essentiels :
- Planet : Optimisation technique des systèmes pour moins de consommation CO2
- People : Organisation projet permettant de traiter les problèmatiques performances en avance de phase sans stress pour les équipes
- Profit : Assurance de flux métier fonctionnel pour support l’activité de l’entreprise
Ci dessous une illustation de cette méthodologie mise en parallèle d’un planning d’implémentation du Business Central.

Pour poursuivre sur un sujet complémentaire : Rapports Power BI Business Central : 15 exemples sur la performance, l’usage et les erreurs.
Leave a comment