Zum Hauptinhalt springen
Professional Services Automation (PSA)

Fehler in PSA for Odoo: ein Fallbeispiel, Meldung für Meldung

Abgesehen vom allgemeinen Access denied sagt jede Fehlermeldung von Professional Services Automation (PSA) for Odoo, was fehlt: eine Rolle (etwa Operations Directors für den Import von Tarifen), eine Voraussetzung des Meilensteins (Anhang, interne Freigabe oder Abnahme durch den Kunden) oder ein bestimmter Status von Vertrag, Änderungsauftrag oder Anfrage. Sie lösen das Problem, indem Sie diese Bedingung erfüllen, nicht durch erneutes Versuchen. Unten sehen Sie es an einer erfundenen Beratungsfirma, die den Ablauf durchgeht und auf jede Meldung stößt.

FlexigoTech · Verantwortlich: Víctor Gómez · Aktualisiert am 4. November 2026

Das Wichtigste

Versionen
Odoo 17, 18 und 19
Geprüft
im Quellcode des Moduls, Version 19.0 · in den Quellen am Ende
Lesezeit
6 Min.

Eine erfundene Beratungsfirma führt PSA ein

Beispiel Fiktiver Fall: Firma und Zahlen sind erfunden, um den Ablauf zu zeigen.

Estudio Ribera ist eine erfundene Beratungsfirma, die gerade Professional Services Automation (PSA) for Odoo installiert hat. Marta, ihre Leiterin Operations, möchte die Tarife laden, einen Vertrag mit Meilensteinen anlegen und mit der Arbeit für einen Kunden beginnen. Unterwegs begegnet ihr ein guter Teil der Fehlermeldungen des Moduls. Wir gehen sie in der Reihenfolge durch, in der sie auftauchen: der genaue Wortlaut, was er bedeutet und was sie tut, um weiterzukommen.

Zuerst öffnet Marta die Einstellungen des Moduls. Dort erscheint kein Fehler.

Odoo-Einstellungen im Bereich PSA mit leerem Feld WIP Account und nicht aktiviertem Einrichtungs-Kontrollkästchen
Die PSA-Einstellungen, wie Marta sie vorfindet, mit leerem WIP Account.

Welche Menüs das Modul hinzufügt und welche Schritte jeder Datensatz durchläuft, lesen Sie unter wie PSA intern funktioniert.

Tarife: wer sie importieren und wer sie ändern darf

Als Erstes versucht Marta, den Tarif der Beratungsfirma zu importieren. Das Modul stoppt sie mit Only Operations Directors can import rate cards. Die Meldung ist eindeutig: Der Import von Rate Cards ist Sache der Rolle Operations Directors, und Martas Benutzer hat sie nicht. Es gibt zwei Wege: Jemand mit dieser Rolle übernimmt den Import, oder wer die Benutzer in ihrem Odoo verwaltet, weist ihr die Rolle zu, sofern das passt.

Liste Rate Cards des PSA-Moduls mit einem einzigen aktiven Datensatz, Standard Rate Card 2024 (Demo), in EUR
Die Liste Rate Cards mit Demodaten: Nur Standard Rate Card 2024 (Demo) erscheint.

Mit geladenem Tarif möchte Marta einem Kunden einen abweichenden Tarif geben. Sie erhält Only PSA Operations users can override billing rates.: Das Ändern von Abrechnungstarifen ist Benutzern von PSA Operations vorbehalten. Ein Kollege mit dieser Rolle versucht es, lässt die Begründung leer und bekommt A reason is mandatory for rate overrides. Die Lösung: den Grund der Änderung eintragen und erneut speichern.

Sehen Sie irgendwann ein bloßes Access denied, verrät die Meldung nicht, welche Berechtigung fehlt. Praktisch ist es, zu notieren, was Sie gerade getan haben, und die Person, die die Berechtigungen verwaltet, um Prüfung zu bitten.

Liste Utilization des PSA-Moduls mit Spalten für Datum, Mitarbeiter, Projekt, Stunden, Tarif, abrechenbaren Betrag, WIP-Status und Kundenfreigabe
Die Liste Utilization mit Tarif und abrechenbarem Betrag als Spalten.

Meilensteine: was jeder verlangt, bevor er als erreicht gilt

Der Vertrag von Estudio Ribera hat einen ersten Meilenstein, „Analyse“. Marta markiert ihn als erreicht, und das Modul antwortet mit Milestone '%s' requires a deliverable attachment before it can be marked as reached. (auf dem Bildschirm steht statt %s der Name des Meilensteins). Dieser Meilenstein verlangt ein angehängtes Arbeitsergebnis, bevor er abgeschlossen werden kann: Marta hängt das Dokument an und markiert ihn erneut.

Der zweite Versuch ergibt Milestone '%s' requires internal approval before it can be marked as reached. Jetzt fehlt die interne Freigabe des Meilensteins. Solange sie nicht vorliegt, lässt er sich nicht als erreicht markieren.

Nach der internen Freigabe erscheint Milestone '%s' requires client acceptance before it can be marked as reached. Current state: %s. Es fehlt die Abnahme durch den Kunden, und die Meldung nennt zusätzlich den aktuellen Status (Current state).

Als Marta diese Freigabe beim Kunden anfordern will, stößt sie auf The customer of milestone '%s' has no portal access: grant it first, the approval page needs a login. Die Freigabeseite setzt voraus, dass sich der Kunde anmeldet, und dieser Kunde hat keinen Portalzugang. Zuerst muss ihm Portalzugang gewährt und dann die Aktion wiederholt werden.

Die letzte Meilenstein-Meldung funktioniert umgekehrt: Milestone '%s' does not wait for a client approval. Sie erscheint, wenn jemand eine Kundenfreigabe für einen Meilenstein erfassen will, der keine erwartet. Prüfen Sie, ob Sie den falschen Meilenstein gewählt haben.

Rundgang durch die Liste Milestones Roll-up, die nicht abrechenbaren Kategorien, die PSA-Einstellungen und die Liste Utilization
Die Bildschirme des Moduls, die Marta durchläuft: Meilensteine mit ihrem Kontrollkästchen für erreicht, nicht abrechenbare Kategorien, Einstellungen und Utilization.

Änderungsaufträge: der Status entscheidet, was möglich ist

Mitten im Projekt wünscht der Kunde einen größeren Umfang, und Marta legt einen Änderungsauftrag an. Sie reicht ihn ein und reicht ihn versehentlich noch einmal ein: Only draft change orders can be submitted. Nur Aufträge im Entwurf lassen sich einreichen, und dieser war es nicht mehr.

Danach versucht ein Kollege, ihn freizugeben, und erhält User %(name)s has no pending approval step on this change order. Die Meldung nennt den Benutzer und besagt, dass er bei diesem Auftrag keinen offenen Freigabeschritt hat. Freigeben muss, wer diesen Schritt tatsächlich offen hat.

Schließlich möchte Marta den Auftrag umsetzen, bevor der Kunde geantwortet hat: Only client-accepted change orders can be implemented. Umgesetzt werden nur Aufträge, die der Kunde bereits angenommen hat, also heißt es, auf diese Annahme zu warten.

Drei Protokolle, die keine Änderungen zulassen

Marta sieht einen Eintrag in einem der Protokolle des Moduls und versucht, ihn zu korrigieren. Es gibt drei Meldungen dieser Art:

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

Die Meldung sagt es: Dieses Protokoll ist unveränderlich. Es ist kein Berechtigungsproblem, das sich mit einer anderen Rolle lösen ließe.

Verträge und Exporte: die Status, die das Modul prüft

Zum Jahresende möchte Marta einen Vertrag beenden und einen anderen archivieren. Der erste liefert Only active or suspended contracts can be terminated.: Nur aktive oder ausgesetzte Verträge lassen sich beenden. Der zweite Only terminated or suspended contracts can be archived.: Archiviert werden nur beendete oder ausgesetzte. Der Vertrag, den sie archivieren wollte, war noch aktiv, also beendet sie ihn zuerst und archiviert ihn danach.

Eine Meldung bleibt noch: Export can only be generated for pending or processing requests. Der Export wird nur für ausstehende oder in Bearbeitung befindliche Anfragen erzeugt. Ist die Anfrage in keinem dieser Status, erzeugt das Modul ihn nicht.

Was der Fall Estudio Ribera lehrt

Jedes von Martas Hindernissen ließ sich lösen, indem sie das Ende der Meldung las: Dort stehen die fehlende Rolle, die Voraussetzung des Meilensteins oder der nötige Status. Hier die Zusammenfassung:

MeldungWann sie erscheintWas zu tun ist
Only Operations Directors can import rate cardsBeim Import von Rate Cards ohne diese RolleVon einem Operations Director erledigen lassen oder die Rolle anfordern
Only PSA Operations users can override billing rates.Beim Ändern eines Abrechnungstarifs ohne diese RolleVon einem Benutzer von PSA Operations erledigen lassen
A reason is mandatory for rate overrides.Beim Ändern eines Tarifs ohne BegründungDie Begründung eintragen
Milestone '%s' requires a deliverable attachment...Beim Markieren eines Meilensteins als erreicht ohne ArbeitsergebnisDas Arbeitsergebnis anhängen
Milestone '%s' requires internal approval...Beim Markieren eines Meilensteins als erreicht ohne interne FreigabeDie interne Freigabe einholen
Milestone '%s' requires client acceptance...Beim Markieren eines Meilensteins als erreicht ohne Abnahme durch den KundenAuf die Abnahme warten; die Meldung nennt den aktuellen Status
The customer of milestone '%s' has no portal access...Der Kunde des Meilensteins hat keinen PortalzugangPortalzugang gewähren und wiederholen
Only draft change orders can be submitted.Beim Einreichen eines Auftrags, der nicht im Entwurf istDen Status des Auftrags prüfen
Only client-accepted change orders can be implemented.Beim Umsetzen eines Auftrags ohne Annahme durch den KundenWarten, bis der Kunde ihn annimmt
Only active or suspended contracts can be terminated.Beim Beenden eines Vertrags in einem anderen StatusDen Status des Vertrags prüfen
Only terminated or suspended contracts can be archived.Beim Archivieren eines aktiven VertragsIhn vorher beenden

Wie Sie Rollen, Meilensteine und Verträge vorbereiten, bevor diese Meldungen auftauchen, lesen Sie unter Einrichtung des Moduls.

Wie FlexigoTech Sie unterstützt

Bei FlexigoTech implementieren wir Odoo 17, 18, 19 und 20 und entwickeln individuelle Konnektoren und Integrationen. Daher können wir Ihnen helfen, Rollen zu verteilen, Meilensteine vorzubereiten und die Meldungen zu prüfen, die in Ihrem Fall auftreten. Das Modul ist in Odoo Apps für 17, 18 und 19 erhältlich, für 9 € pro Odoo-Version, Einmalzahlung, zzgl. MwSt.; der lokale Service von FlexigoTech Cloud kostet 29 €/Monat oder 290 €/Jahr zzgl. MwSt. (Pro: 58 €/Monat oder 580 €/Jahr). Alle Details finden Sie auf der Modulseite und in seinem Eintrag in Odoo Apps.

Weiterlesen

So funktioniert Professional Services Automation (PSA) for Odoo im InnerenMenüs, geplante Aktionen und externer Dienst von Professional Services Automation (PSA) for Odoo, Begriff für Begriff erklärt für Odoo-Anwender.PSA for Odoo einrichten: Einstellungen, Projektfelder und die erste WocheSo richten Sie Professional Services Automation (PSA) in Odoo 17, 18 und 19 ein: Einstellungen, Projektfelder und was Sie in der ersten Woche prüfen.Professional Services Automation (PSA) for Odoo: So prüfen Sie, ob es zu Ihnen passtWas Professional Services Automation (PSA) for Odoo laut App-Seite abdeckt und was nicht, was Sie vorab prüfen sollten und für welche Odoo-Versionen es erscheint.
Geprüft im Quellcode des Moduls (Version 19.0) und in den verlinkten Quellen

Quellen

  • Quellcode des Moduls: flexigo_psa_premium 19.0 (9670343f): controllers/portal.py
  • Quellcode des Moduls: flexigo_psa_premium 19.0 (9670343f): controllers/rate_card_import.py
  • Quellcode des Moduls: flexigo_psa_premium 19.0 (9670343f): models/account_analytic_line_ext.py
  • Quellcode des Moduls: flexigo_psa_premium 19.0 (9670343f): models/project_milestone_ext.py
  • Quellcode des Moduls: flexigo_psa_premium 19.0 (9670343f): models/psa_change_order.py
  • Quellcode des Moduls: flexigo_psa_premium 19.0 (9670343f): models/psa_dsar_request.py
  • Quellcode des Moduls: flexigo_psa_premium 19.0 (9670343f): models/psa_nte_audit_log.py
  • Quellcode des Moduls: flexigo_psa_premium 19.0 (9670343f): models/psa_portal_action_log.py
  • Quellcode des Moduls: flexigo_psa_premium 19.0 (9670343f): models/psa_rate_override_log.py
  • Quellcode des Moduls: flexigo_psa_premium 19.0 (9670343f): models/psa_retainer_contract.py
  • apps.odoo.com/apps/modules/19.0/flexigo_psa_premium
  • apps.odoo.com/apps/modules/17.0/flexigo_psa_premium
  • apps.odoo.com/apps/modules/18.0/flexigo_psa_premium
  • flexigotech.com/en/services.html
  • flexigotech.com/precios.html