Aller au contenu principal
Professional Services Automation (PSA)

Erreurs de PSA for Odoo : un cas d'exemple, message par message

À part le générique Access denied, chaque message d'erreur de Professional Services Automation (PSA) for Odoo indique ce qui manque : un profil (comme Operations Directors pour importer les grilles tarifaires), une exigence du jalon (pièce jointe, approbation interne ou acceptation du client) ou un état précis du contrat, de l'ordre de modification ou de la demande. On le corrige en remplissant cette condition, pas en réessayant. Ci-dessous, un cabinet de conseil fictif parcourt le flux et rencontre chaque message.

FlexigoTech · Responsable : Víctor Gómez · Mis à jour le 4 novembre 2026

L'essentiel

Versions
Odoo 17, 18 et 19
Vérifié
dans le code du module, version 19.0 · dans les sources citées à la fin
Lecture
7 min

Un cabinet de conseil fictif qui met en place PSA

Exemple Cas illustratif : l'entreprise et ses chiffres sont inventés pour expliquer le flux.

Estudio Ribera est un cabinet de conseil fictif qui vient d'installer Professional Services Automation (PSA) for Odoo. Marta, sa responsable des opérations, veut charger les tarifs, préparer un contrat avec jalons et commencer à travailler pour un client. En chemin, elle tombe sur une bonne partie des messages d'erreur du module. Nous les passons en revue dans l'ordre où ils apparaissent : le texte exact, ce qu'il signifie et ce qu'elle fait pour avancer.

Avant tout, Marta ouvre les paramètres du module. Aucune erreur n'apparaît à ce stade.

Paramètres d'Odoo dans la section PSA avec le champ WIP Account vide et la case de configuration non cochée
Les paramètres de PSA tels que Marta les trouve, avec WIP Account vide.

Si vous voulez revoir les menus ajoutés par le module et le parcours de chaque enregistrement, consultez comment fonctionne PSA en coulisses.

Tarifs : qui peut les importer et qui peut les modifier

La première chose que tente Marta, c'est d'importer la grille tarifaire du cabinet. Le module l'arrête avec Only Operations Directors can import rate cards. Le message est clair : importer des rate cards relève du profil Operations Directors, et l'utilisateur de Marta ne l'a pas. Deux solutions : quelqu'un qui a ce profil fait l'import, ou la personne qui gère les utilisateurs de son Odoo le lui attribue, si c'est pertinent.

Liste des Rate Cards du module PSA avec un seul enregistrement actif, Standard Rate Card 2024 (Demo), en EUR
La liste des Rate Cards, avec des données de démonstration : seule Standard Rate Card 2024 (Demo) apparaît.

La grille chargée, Marta veut appliquer un tarif différent à un client. Elle obtient Only PSA Operations users can override billing rates. : modifier les tarifs de facturation est réservé aux utilisateurs PSA Operations. Un collègue qui a ce profil essaie, laisse le motif vide et reçoit A reason is mandatory for rate overrides. La solution consiste à saisir le motif du changement et à enregistrer de nouveau.

Si vous voyez un jour Access denied tout court, le message ne précise pas quel droit manque. Le plus pratique est de noter ce que vous faisiez à ce moment-là et de demander à la personne qui gère les droits de vérifier.

Liste Utilization du module PSA avec colonnes date, employé, projet, heures, tarif, montant facturable, état WIP et approbation du client
La liste Utilization, avec le tarif et le montant facturable en colonnes.

Jalons : ce que chacun exige avant d'être considéré comme atteint

Le contrat d'Estudio Ribera comporte un premier jalon, « Analyse ». Marta le marque comme atteint et le module répond Milestone '%s' requires a deliverable attachment before it can be marked as reached. (à l'écran, le nom du jalon remplace %s). Ce jalon exige un livrable joint avant d'être clôturé : Marta joint le document et le marque de nouveau.

La deuxième tentative donne Milestone '%s' requires internal approval before it can be marked as reached. Cette fois, il manque l'approbation interne du jalon. Tant qu'il ne l'a pas, il ne peut pas être marqué comme atteint.

Une fois l'approbation interne obtenue, apparaît Milestone '%s' requires client acceptance before it can be marked as reached. Current state: %s. Il manque l'acceptation du client, et le message ajoute l'état actuel (Current state).

Quand Marta tente de demander cette approbation au client, elle tombe sur The customer of milestone '%s' has no portal access: grant it first, the approval page needs a login. La page d'approbation exige que le client se connecte, et ce client n'a pas accès au portail. Il faut d'abord lui donner accès au portail, puis répéter l'action.

Le dernier message sur les jalons fonctionne à l'inverse : Milestone '%s' does not wait for a client approval. Il apparaît quand on essaie d'enregistrer une approbation du client sur un jalon qui n'en attend pas. Vérifiez que vous ne vous êtes pas trompé de jalon.

Parcours de la liste Milestones Roll-up, des catégories non facturables, des paramètres de PSA et de la liste Utilization
Les écrans du module que Marta parcourt : jalons avec leur case atteint, catégories non facturables, paramètres et Utilization.

Ordres de modification : l'état décide de ce qui est possible

En cours de projet, le client demande d'élargir le périmètre et Marta crée un ordre de modification. Elle l'envoie puis, sans s'en rendre compte, l'envoie de nouveau : Only draft change orders can be submitted. Seuls les ordres en brouillon peuvent être envoyés, et celui-ci ne l'était plus.

Ensuite, un collègue tente de l'approuver et reçoit User %(name)s has no pending approval step on this change order. Le message indique le nom de l'utilisateur et précise qu'il n'a aucune étape d'approbation en attente sur cet ordre. L'approbation doit venir de la personne qui a bien cette étape en attente.

Enfin, Marta veut appliquer l'ordre avant que le client ait répondu : Only client-accepted change orders can be implemented. Seuls les ordres déjà acceptés par le client peuvent être mis en œuvre, il faut donc attendre cette acceptation.

Trois journaux non modifiables

Marta repère une entrée dans l'un des journaux du module et tente de la corriger. Il existe trois messages de ce type :

  • NTE audit log is immutable.
  • Portal action log is immutable.
  • Rate override log is immutable.

Le message est explicite : ce journal est immuable. Ce n'est pas un problème de droits qu'on règle avec un autre profil.

Contrats et exports : les états que vérifie le module

À la clôture de l'exercice, Marta veut résilier un contrat et en archiver un autre. Le premier lui renvoie Only active or suspended contracts can be terminated. : seuls les contrats actifs ou suspendus peuvent être résiliés. Le second, Only terminated or suspended contracts can be archived. : seuls les contrats résiliés ou suspendus peuvent être archivés. Le contrat qu'elle voulait archiver était encore actif : elle le résilie d'abord, puis l'archive.

Reste un dernier message : Export can only be generated for pending or processing requests. L'export n'est généré que pour les demandes en attente ou en cours de traitement. Si la demande n'est pas dans l'un de ces états, le module ne le génère pas.

Ce qu'il faut retenir du cas d'Estudio Ribera

Chaque obstacle rencontré par Marta s'est résolu en lisant la fin du message : c'est là qu'apparaissent le profil manquant, l'exigence du jalon ou l'état requis. Voici le récapitulatif :

MessageQuand il apparaîtQue faire
Only Operations Directors can import rate cardsÀ l'import de rate cards sans ce profilLe faire faire par un Operations Director ou demander le profil
Only PSA Operations users can override billing rates.À la modification d'un tarif de facturation sans ce profilLe faire faire par un utilisateur PSA Operations
A reason is mandatory for rate overrides.À la modification d'un tarif sans motifSaisir le motif
Milestone '%s' requires a deliverable attachment...En marquant atteint un jalon sans livrableJoindre le livrable
Milestone '%s' requires internal approval...En marquant atteint un jalon sans approbation interneObtenir l'approbation interne
Milestone '%s' requires client acceptance...En marquant atteint un jalon sans acceptation du clientAttendre l'acceptation ; le message indique l'état actuel
The customer of milestone '%s' has no portal access...Le client du jalon n'a pas accès au portailLui donner accès au portail et recommencer
Only draft change orders can be submitted.À l'envoi d'un ordre qui n'est pas en brouillonVérifier l'état de l'ordre
Only client-accepted change orders can be implemented.À la mise en œuvre d'un ordre non accepté par le clientAttendre que le client l'accepte
Only active or suspended contracts can be terminated.À la résiliation d'un contrat dans un autre étatVérifier l'état du contrat
Only terminated or suspended contracts can be archived.À l'archivage d'un contrat actifLe résilier d'abord

Pour préparer correctement profils, jalons et contrats avant que ces messages n'apparaissent, consultez la mise en route du module.

Comment FlexigoTech vous aide

Chez FlexigoTech, nous déployons Odoo 17, 18, 19 et 20 et développons des connecteurs et intégrations sur mesure : nous pouvons donc vous aider à répartir les profils, préparer les jalons et analyser les messages qui apparaissent dans votre cas. Le module est disponible sur Odoo Apps pour les versions 17, 18 et 19, à 9 € par version d'Odoo, paiement unique, HT ; le service local FlexigoTech Cloud coûte 29 €/mois ou 290 €/an HT (Pro : 58 €/mois ou 580 €/an). Vous trouverez tous les détails sur la page du module et sur sa fiche Odoo Apps.

À lire aussi

Comment fonctionne Professional Services Automation (PSA) for Odoo de l'intérieurMenus, actions planifiées et service externe de Professional Services Automation (PSA) for Odoo, expliqués terme par terme pour qui utilise déjà Odoo.Mise en place de PSA for Odoo : paramètres, champs du projet et première semaineGuide pour mettre en place Professional Services Automation (PSA) dans Odoo 17, 18 et 19 : paramètres, champs du projet et points à vérifier la première semaine.Professional Services Automation (PSA) for Odoo : savoir s'il convient à votre entrepriseCe que couvre ou non Professional Services Automation (PSA) for Odoo selon sa fiche, quoi vérifier avant l'installation et les versions d'Odoo publiées.
Vérifié dans le code du module (version 19.0) et dans les sources citées

Sources