Deux applications de plus sur le même noyau : salon de beauté et assureurLe salon travaille depuis l'agenda du jour par praticien : les rendez-vous se déplacent à la souris, une heure libre ouvre la fiche avec praticien, date et heure déjà remplis, et des heures peuvent être bloquées pour une pause, le ménage ou un jour de repos — sur un créneau fermé, la base refuse toute prise de rendez-vous. L'application d'assurance couvre vie, auto et habitation : le calcul de la prime affiche chaque coefficient appliqué, les règles de souscription refusent ou remontent le risque, le contrat reçoit son échéancier, le sinistre est réglé dans la limite de la garantie et la franchise, l'agent perçoit sa commission. Sans une ligne de C++ : des métadonnées dans leur propre schéma, et la grille horaire est devenue un widget du noyau.
Budgets : comptes obligatoires, montants signés, fenêtre de paiement, overhead, modes de correction, journal et prévision de compteLes montants prévus et réels portent désormais un signe (+ entrée, − sortie) et un symbole monétaire partout : un même budget peut contenir des recettes et des dépenses — un crédit, par exemple. Chaque paiement réel doit indiquer un compte : le bouton ₊ de l'arbre ouvre une fenêtre de paiement avec le reste à payer, la date de l'échéance et le compte par défaut de la ligne déjà renseignés. Chaque nœud affiche entrées, sorties et overhead (réel − prévu) ; les corrections du plan se font à la main, automatiquement en cas de dépassement, ou sont verrouillées. Chaque modification est journalisée avec son auteur, et la fiche du compte trace le solde réel plus une prévision en pointillés à partir des paiements en attente et des lignes non payées.
Budgets : paiements récurrents en lignes séparées, réalisé en un clic et calendriers de datesUne ligne budgétaire récurrente se déploie désormais dans l'arbre en lignes distinctes par date, chacune avec son réalisé et son statut, la ligne parente conservant le total. Le nouveau bouton ₊ sur les lignes feuilles crée un paiement réel égal au plan à la date du jour, et tous les champs de date modifiables disposent d'un calendrier natif dans la langue de l'utilisateur.
Paiements planifiés récurrents dans les budgets — avec période de rapport en directUne ligne de budget peut désormais se répéter chaque semaine, mois, trimestre ou année, à partir de sa première date, avec une date de fin facultative. Son plan est le montant multiplié par le nombre d'occurrences dans la période, marqué ⟳ dans l'arbre. La fiche budget gagne des champs de période de/à qui recalculent instantanément plan, réalisé et graphique — sans rechargement ni bouton appliquer. Les lignes sans date de fin s'affichent pour la période choisie (l'année en cours par défaut), et l'API REST expose les champs de récurrence.
Suppression sûre dans les budgets — avec confirmation et garde-fous de dépendancesLes budgets, les nœuds du plan et les paiements se suppriment désormais directement depuis leurs formulaires. Chaque suppression demande d'abord confirmation, et le moteur refuse de supprimer tout ce qui a encore des enregistrements dépendants : un nœud avec des sous-nœuds ou des paiements rattachés, un budget dont l'arbre n'est pas vide. Les garde-fous s'appliquent aussi dans la base de données, si bien que l'API REST et le SQL direct suivent la même règle — et le nouvel attribut confirm est disponible pour chaque bouton du designer.
Porté depuis le CRM hérité : travaux et services, garages de véhicules, droits au niveau des contrôles, images produitQuatre modules repris du CRM de bureau hérité. Un catalogue de travaux et services : les prestations se vendent comme lignes du document de vente sans toucher au stock. Les garages de véhicules des clients avec sélection de pièces — un clic transforme la sélection en brouillon de vente. Les droits de rôle atteignent désormais un contrôle de formulaire ou une colonne de grille (masquer ou lecture seule), appliqués côté serveur. Et la fiche produit gagne des galeries d'images avec téléversement, ordre et photo principale.
Formata Bank : un poste bancaire complet construit sur la plateformeUne nouvelle application vitrine prouve que le moteur va bien au-delà du CRM : un poste de travail pour employés de banque avec clients et KYC, comptes, cartes, caisse et virements (interne, paiement instantané, SWIFT), dépôts avec intérêts calculés quotidiennement et une filière crédit complète — demande, scoring du bureau de crédit, approbation et échéancier par annuités. Chaque opération traverse un moteur antifraude de 11 règles directement dans la base de données : les transactions à risque sont gelées, les cartes bloquées, les analystes traitent les alertes dans leur propre moniteur, et la conformité dispose d'un filtrage sur listes de sanctions et d'une piste d'audit. Des passerelles virtuelles — processing carte, taux de change, bureau de crédit et réseau de paiement — alimentent la démo en données réalistes. Le tout fonctionne comme une instance séparée du même cœur, les données étant isolées dans un schéma de base dédié.
Un jeu d'icônes repensé dans toute l'interfaceLes icônes du menu et des formulaires ont été entièrement redessinées : 89 icônes duotone dessinées à la main, et le moteur choisit désormais automatiquement une icône parlante pour chaque formulaire — leads, affaires, entrepôt, budgets, processus et outils d'administration ont chacun leur identité visuelle. L'heuristique s'appuie sur l'identifiant du formulaire : elle est indépendante de la langue et couvre les 14 langues de l'interface, et le designer permet toujours de choisir une icône manuellement.
L'interface parle désormais 14 languesL'interface du produit est entièrement localisée : anglais, russe, allemand, espagnol, français, italien, polonais, portugais, turc, japonais, coréen, chinois, arabe et farsi — les mêmes 14 langues que ce site. Toutes les chaînes des formulaires et plus d'un millier de chaînes de la coque sont traduites, l'arabe et le farsi s'affichent de droite à gauche, et le cœur C++ résout chaque libellé côté serveur dans la langue de chaque requête, avec repli sur l'anglais là où la traduction manque.
Interface entièrement bilingue : chaque formulaire en anglais et en russeLe produit entier parle désormais deux langues de bout en bout. Les 154 formulaires — chaque titre, libellé, astuce, colonne, option et entrée de menu, 867 clés de dictionnaire au total — s'affichent dans la langue de l'utilisateur via le dictionnaire de contenu côté serveur ; le concepteur, la supervision et l'habillage applicatif suivent avec 580 chaînes localisées de plus. Changez de langue dans la barre latérale : tout bascule instantanément, de l'organigramme aux listes de prix ; l'éditeur de dictionnaire permet d'affiner chaque traduction ou d'ajouter des langues.
Les outils du bâtisseur dans le concepteur, transfert de configuration entre environnementsLes outils de service — cas de test UI, surveillance des requêtes lentes, file des tâches d'arrière-plan, profil des scripts et console de l'API d'intégration — vivent désormais à leur place : dans le concepteur de formulaires, pas dans le menu des utilisateurs. Et le transfert de configuration a reçu une interface complète : choisissez formulaires, requêtes et scripts, téléchargez-les en un ensemble JSON, appliquez-le sur un autre environnement avec aperçu des différences par champ — et annulez tout ensemble appliqué en un clic.
Concepteur BPM : sélecteurs de champs, changement d'entité en direct, analytiqueUn audit complet du module BPM a restauré tout ce qui s'était perdu en silence : l'entité du processus arrive de nouveau dans le concepteur, les sélecteurs de champs, rôles et scripts (dont l'étape « Définir un champ ») se remplissent dès le choix de l'entité — sans enregistrer ni rouvrir ; la liste des entités vient du registre extensible (y compris les tâches et les tables reliées depuis le diagramme ER). La synchronisation du déclencheur depuis le nœud de départ, le démarrage des processus à la modification et l'analytique avec heatmap des jetons refonctionnent ; tout le contenu BPM fait partie de la chaîne d'installation reproductible, vérifiée par neuf suites de tests.
Listes de prix : marges par groupe, périodes de validité, tâches d'étiquetageLes listes de prix disposent du modèle complet : type détail ou gros, périodes de validité (une liste par défaut sans date de fin plus des listes datées prioritaires — tarifs de nuit ou de week-end) et marges par groupe de produits avec héritage dans l'arbre des groupes. La génération remplit chaque fiche produit ; les utilisateurs habilités peuvent corriger chaque prix à la main, la colonne Δ% montre l'écart avec le prix calculé par groupe — les corrections manuelles survivent au recalcul. Une liste se copie en un clic. Quand la liste active change, une tâche est créée pour le responsable et seules les étiquettes modifiées sont imprimées.
Annulation, clavier, lecteurs d’écranL’ajout de lignes s’accompagne désormais d’un bouton « Annuler » : un clic retire exactement les lignes qui viennent d’être ajoutées, via un jeton serveur à usage unique valable pour vous seul — le client ne peut donc jamais lancer de scripts arbitraires. Les tableaux se pilotent entièrement au clavier (flèches, espace pour cocher, Entrée pour agir), Échap ferme uniquement la fenêtre du dessus, le focus reste dans la fenêtre modale puis revient à son origine, et tableaux, dialogues et messages sont balisés pour les lecteurs d’écran.
Partager un seul enregistrement, pas un rôle entierLa visibilité suit l’organigramme — vos enregistrements, votre service, votre société — mais le travail, non. Un commercial suit l’affaire et un juriste d’un autre service doit y être associé. Jusqu’ici il fallait élargir le rôle, et la personne voyait trop, définitivement. L’accès se donne désormais sur un enregistrement précis, à une personne ou un rôle, en lecture ou en écriture, avec une échéance si besoin. Il ne fait qu’ajouter, jamais retirer : retirer reste l’affaire des rôles, pour que « pourquoi voyait-il cela ? » ait un seul endroit où chercher. L’échéance s’éteint seule, car un accès temporaire qu’il faut penser à révoquer ne l’est jamais — et le motif, l’auteur et l’heure sont conservés.
Des droits par champ qu’un administrateur peut réellement poserLe salaire visible seulement par les RH, le prix de revient seulement par les achats : la règle se pose une fois, sur une colonne, et vaut partout où le champ est affiché ou écrit — sans script par champ ni formulaire oublié. Caché veut dire non inscriptible : affichage et écriture sont fermés par la même règle. Sans règle, le champ est ouvert : la règle décrit une restriction, pas une permission. Quand plusieurs rôles se croisent, le droit le plus large l’emporte — une interdiction doit être une décision, non un hasard.
Déplacer les réglages entre environnements — et revenirFormulaires, requêtes, scripts et planification sont des données : ce qui a été mis au point sur la plateforme d’essai part en production comme un seul lot. Avant application, on voit ce qui apparaîtra et ce qui changera, champ par champ ; tout s’applique en une transaction ; l’état précédent est conservé, donc on revient en arrière sans restaurer toute une base. Les données métier ne voyagent jamais.
Un numéro de demande à citerChaque requête reçoit un code court, sans caractères qui se confondent, pour pouvoir être dicté au téléphone. Il figure dans le message d’erreur et dans le journal du service : un appel au support commence par « code 7KMQ2XPD » et non par « hier après-midi, ça n’a pas enregistré ». Les requêtes de base de données au-delà du seuil sont collectées avec leur texte, leur durée et ce numéro — y compris celles des scripts, où se cache le plus lourd. Par script : appels, temps total et pire temps, taux d’erreurs.
File d’attente des tâches de fondLe travail long ne bloque plus la fenêtre. Envois en nombre, exports vers les échanges, recalculs de rapports partent dans une file : la réponse arrive tout de suite et le travail poursuit son cours, en survivant à un redémarrage du service. Un échec n’est pas perdu — la tâche est reprise avec une pause croissante : un système externe indisponible trois minutes ne consomme pas toutes les tentatives en trois secondes. Une fois les tentatives épuisées, la tâche reste visible avec sa dernière erreur, ses données d’entrée et l’horaire de chaque tentative ; la cause corrigée, un bouton la remet dans la file. Si l’exécutant lui-même meurt, la tâche revient dans la file au lieu de rester bloquée en « en cours ».
Documents légaux par paysLes documents d'expédition suivent les règles du pays depuis lequel s'effectue la vente : pour la Russie, le bon de livraison TORG-12, la facture de TVA et le formulaire combiné UPD ; pour les États-Unis, une facture commerciale et une liste de colisage conformes aux exigences douanières ; pour l'Union européenne, une facture portant toutes les mentions obligatoires de la directive TVA ainsi qu'un bon de livraison. Le système ne propose que les formulaires valables dans le pays du document, reprend les identifiants fiscaux des parties, calcule la taxe par ligne et par taux, et écrit le montant en toutes lettres là où la forme l'exige.
Concepteur de formulaires d'impressionLes utilisateurs composent eux-mêmes leurs documents imprimés — bons de livraison, états, contrats — à partir de bandes et de champs, sans développeur. Les données passent uniquement par l'ORM, un script Python facultatif calcule ce que la requête ne fournit pas, et l'aperçu affiche exactement ce qui ira dans le PDF. L'impression multipage gère la répétition des en-têtes de tableau, les sous-totaux par groupe, la numérotation, le changement d'orientation, les QR codes et les codes-barres ; le PDF/A d'archivage est disponible.
Gestion des stocks : soldes, réservations, validationComptabilité des stocks complète, portée depuis un système hérité en C++Builder : entrepôts, réceptions, transferts entre entrepôts, mises au rebut, retours et réévaluations. Le stock est suivi par entrepôt, emplacement, lot, état et prix d'achat, sur deux couches — stock physique et réservation — de sorte que la quantité disponible est toujours le stock moins ce qui est déjà engagé. Valider un document au-delà du disponible est refusé, chiffres exacts à l'appui. Les prix sont historisés, avec tarifs et marges ; les rapports couvrent les mouvements de la période, les réservations, les articles sous le minimum et le journal complet des mouvements.
TinyORM : le seul chemin des scripts vers la baseLes scripts Python accèdent aux données via un constructeur de requêtes fluide : valeurs passées en paramètres, identifiants vérifiés contre le schéma, condition obligatoire pour les modifications et suppressions ; le SQL brut peut être désactivé entièrement. Le concepteur offre la coloration syntaxique et des suggestions à la volée sur les tables et leurs champs, issues du schéma réel.
Événements de démarrage BPM : les quatre typesLes processus démarrent sur signal (enregistrement créé, modifié — jusqu'à un champ et une condition précis — ou supprimé), sur minuterie (une fois à une date et heure, périodiquement ou par cron), à la main (bouton global ou depuis la fiche d'un enregistrement, en reprenant son identifiant) ou sur message d'un autre processus.
Notifications en temps réelLes changements atteignent immédiatement les écrans ouverts : le serveur émet des événements en s'appuyant sur les notifications de la base, si bien qu'un enregistrement sauvegardé par un collègue apparaît sans rafraîchir.
Structure organisationnelle d'entreprise dans le cœurModèle organisationnel versionné dans le temps à n'importe quelle date — passée ou future : entités juridiques, hiérarchie des unités, postes avec ETP planifié, grades et lignes hiérarchiques, sites et centres de coûts, affectations (principale et cumuls, avec quotité d'ETP, responsable administratif et fonctionnel) et délégations. Il calcule effectif prévu/réel/vacances, les chaînes hiérarchiques et le destinataire effectif d'une délégation ; une réorganisation se planifie à une date future sans perdre l'historique. Le concepteur gagne un onglet « Structure organisationnelle » avec date d'observation.
Permissions par requête et gestion centrale des utilisateursLa couche SQL de lecture est désormais soumise à permissions : chaque requête nommée porte une liste de rôles vérifiée par le cœur C++ à chaque exécution (vide — tous, admin — toujours ; fail-closed). Le concepteur gagne un onglet « Utilisateurs et rôles » : création, rôles, désactivation, réinitialisation de mot de passe — dans chaque produit. Les mots de passe sont stockés en hachés bcrypt ; les comptes hérités sont re-hachés de façon transparente à la première connexion. Les groupes d'utilisateurs — statiques ou calculés par votre propre requête SQL — font aussi partie du cœur et se gèrent depuis le concepteur.
BPM et diagramme ER dans le cœur de la plateformeLe moteur de processus métier (concepteur visuel, approbations, minuteries, scripts, déclencheurs sur n'importe quelle table) et le diagramme ER interactif du modèle de données font désormais partie du cœur de la plateforme : un pack idempotent les installe dans toute base produit, et le concepteur de formulaires gagne les onglets intégrés « Processus (BPM) » et « Diagramme ER » — disponibles dans chaque produit, du CRM à l'IDM.
IAM d'entreprise : cycle de vie piloté par les RH et gouvernance ADFormata IDM couvre désormais de bout en bout une spécification industrielle d'identité : 11 rapports de sécurité intégrés avec abonnements, prolongation des rôles lors des mutations avec révocation automatique, validation en deux étapes pour l'intégration des prestataires/GPH, cinq rôles standard avec cloisonnement de l'interface, mappage complet des attributs AD avec placement en OU et format Description, et modèles d'e-mails de cycle de vie.
Connecteur Active DirectoryConnectez Formata IDM à Microsoft Active Directory via LDAP : synchronisez les comptes dans le registre des identités, associez-les aux employés par e-mail/UPN et lisez le statut (activé/désactivé). Provisionnement du cycle de vie complet — création, activation/désactivation, appartenance aux groupes et réinitialisation du mot de passe — via LDAPS.
Connecteur Microsoft ExchangeFormata IDM provisionne désormais de vraies boîtes aux lettres Exchange 2019 via remote PowerShell (pypsrp + Kerberos) : à l'embauche, une boîte est activée (SMTP principal, visible dans le carnet d'adresses) et, au départ, elle est masquée de la liste d'adresses globale avec suppression du transfert et des règles de boîte de réception. Intégré aux processus d'embauche/départ et vérifié de bout en bout sur un domaine réel.
Diagramme interactif du modèle de données (ER)Visualisez la base comme un diagramme ER interactif — tables avec clés, relations par clés étrangères en flèches, recherche, glisser-déposer et disposition automatique. Clic droit sur une table pour attacher un déclencheur BPM (avec détection de changement de champ) ; les tables avec déclencheurs sont marquées ⚡.
Gouvernance des identités (IGA) d'entrepriseLe gestionnaire d'identités propose désormais le scoring de risque, des contrôles compensatoires SoD, des rôles métier à appartenance dynamique, un IT Shop avec accès à durée limitée et des connecteurs Microsoft Entra ID et Google Workspace. Désormais avec un indice de risque pondéré et un connecteur SAP SuccessFactors. Poids de risque configurables, approbation des contrôles SoD, connecteurs Google service-account et SCIM.
Client e-mail completConnectez plusieurs boîtes (Gmail, Outlook, Yandex, Mail.ru ou tout IMAP/SMTP) : réception, lecture, réponse, transfert et envoi avec pièces jointes — dans le CRM, liés aux contacts.
Liens profonds partageables (ancres)Copiez un lien vers une tâche, un document ou un enregistrement et collez-le dans le chat — vos collègues l'ouvrent en un clic, s'ils y ont accès.
Messagerie d'équipe intégréeDiscussions directes et de groupe entre employés avec remise en temps réel, présence en ligne, non-lus et notifications de messages manqués — les appels arrivent bientôt. Désormais avec accusés de lecture (✓✓). Les messages sont modifiables (avec la mention « modifié »). Transfert de messages et pièces jointes (fichiers et images).
Routage BPM des tâches vers les équipesLors d'un changement de statut, le BPM affecte la tâche à la bonne équipe et choisit un membre au hasard — ex. nouvelle→managers, à payer→comptabilité, payée→direction.
Graphiques de solde de compte & tableaux plus lisiblesChaque compte dispose d'un graphique de solde dans le temps avec journal des mouvements ; les arbres budgétaires ont désormais des en-têtes de colonnes, des chiffres alignés et des lignes alternées. Les flux d'argent s'affichent avec +/− et couleur.
Budget : virements, réévaluation et répartition autoTransférez de l'argent entre comptes (conversion automatique), historique des taux avec réévaluation, répartition automatique d'un paiement sur les nœuds du plan et export CSV.
Budgets prévu/réelBudgets arborescents avec cumul prévu/réel, statut des paiements, autocorrection et suivi par client.
Navigation entre formulairesTransmettez une valeur sélectionnée à un autre formulaire et ouvrez-le en fenêtre modale — configuré visuellement dans le concepteur.
Tests d'UI automatisés intégrésCréez ou enregistrez des cas de test, exécutez-les et vérifiez les valeurs des champs — sans outils externes.
Visibilité des lignes en profondeurStructure organisationnelle, hiérarchies de postes et accès par catalogues — au-delà du propriétaire et du manager.
Assignment Manager intelligentRoutez le travail par compétences, territoires, disponibilité et capacité avec équilibrage pondéré.
API REST d'intégration v1Clés API à scopes, OpenAPI automatique et une surface d'intégration en libre-service.
Coupe-circuit des scriptsLes automatisations en échec sont désactivées automatiquement et présentées avec un diagnostic complet pour une reprise en un clic.
Import massif (EIM)Chargez des millions de lignes à ~50k lignes/seconde avec résolution des clés étrangères.
Améliorations BPM visuelCouloirs, heatmap en direct, versionnage, branches parallèles et escalade.
Filtrage des tableauxFiltres par colonne avec opérateurs sur toutes les grilles.