Zum Inhalt springen

Odoo 19: Firma archivieren samt Portalbenutzern – Modul partner_archive_users mit Rückfrage statt Fehlermeldung

3. November 2026 | Odoo 19 Community | Eigenentwicklung
3. November 2026 durch
Odoo 19: Firma archivieren samt Portalbenutzern – Modul partner_archive_users mit Rückfrage statt Fehlermeldung

Odoo 19 Modul partner_archive_users: Rückfrage beim Archivieren einer Firma mit Portalbenutzern

Eine Kundenfirma ist abgewandert, der Vertrag beendet, und Sie wollen sie in Odoo archivieren. Odoo antwortet mit einer Fehlermeldung: „Sie können keine Kontakte archivieren, die mit einem aktiven Benutzer verknüpft sind. Archivieren Sie zuerst den zugehörigen Benutzer.“ Hat die Firma mehrere Portalzugänge, heißt das: jeden Benutzer einzeln suchen, einzeln archivieren, zurück zur Firma, erneut archivieren.

Wir haben dafür das kleine Modul Firma archivieren samt Portalbenutzern (partner_archive_users) für Odoo 19 geschrieben. Statt der Fehlermeldung kommt eine Rückfrage, und bei „Ja“ werden die Portalbenutzer und die Firma in einem Schritt archiviert. Das Modul steht als freie Software unter der AGPL-3-Lizenz auf GitHub:

github.com/Alex0176/odoo-partner-archive-users

Wir setzen das Modul bei Biricon IT Services seit dem 3. November 2026 in unserem Produktivsystem ein. Es ist neu, die Erfahrung damit ist also kurz. Wer es übernimmt, sollte die Abschnitte zu Umfang und Grenzen lesen.

Das Problem im Odoo-Standard

Odoo prüft beim Archivieren eines Kontakts, ob ein Benutzer daran hängt, und bricht ab, wenn ja. Die Prüfung ergibt Sinn, denn jeder Benutzer braucht einen Kontakt. Für interne Benutzer, also Mitarbeiter, ist die Sperre auch gewollt. Bei Portalbenutzern von Kunden ist sie aber vor allem Handarbeit. Jede Kundenfirma mit Portalzugängen, etwa zum Einsehen von Rechnungen und Tickets, braucht beim Archivieren denselben Ablauf:

  1. Benutzer der Firma und ihrer Ansprechpartner suchen,
  2. jeden einzeln archivieren,
  3. zurück zur Firma,
  4. Firma archivieren.

Die Lösung: eine Rückfrage

Das Modul erweitert den Weg Aktion → Archivieren am Kontakt, im Formular wie in der Liste. Hängen an der gewählten Firma oder an ihren Ansprechpartnern aktive Portalbenutzer, öffnet sich ein Dialog mit der Frage „Soll die Firma wirklich archiviert werden? Es sind noch aktive Benutzer im System.“ Darunter stehen die betroffenen Benutzer mit Name, Anmeldename und Kontakt.

Vergleich: Odoo-Fehlermeldung beim Archivieren einer Firma und der Rückfrage-Dialog des Moduls

  • Ja, Firma und Benutzer archivieren: Zuerst werden die Benutzer archiviert, dann die Firma.
  • Abbrechen: Es ändert sich nichts.
  • Keine Portalbenutzer vorhanden: Odoo verhält sich wie bisher, es erscheint kein Dialog.

Was archiviert wird und was nicht

Der Umfang ist bewusst eng gefasst:

Übersicht: Portalbenutzer und Firma werden archiviert, Ansprechpartner bleiben aktiv, interne Benutzer werden nie angefasst

  • Nur Portal- und öffentliche Benutzer (share = True). Interne Benutzer werden über diesen Weg nie archiviert. Hängt ein Mitarbeiterzugang an dem Kontakt, bleibt die Fehlermeldung von Odoo bestehen. So sperrt niemand versehentlich einen Mitarbeiter, weil er eine Firma archiviert hat.
  • Ansprechpartner bleiben als Kontakte aktiv. Nur ihre Portalzugänge werden archiviert. Das entspricht dem Odoo-Standard, der beim Archivieren einer Firma die Unterkontakte ebenfalls nicht anfasst.
  • Nur der Archivieren-Weg der Oberfläche. Ein direktes write({'active': False}), etwa in einem Import oder Skript, läuft unverändert in die Prüfung von Odoo.

Technische Umsetzung

Das Modul hat keine neuen Felder an bestehenden Modellen. Es besteht aus einer Erweiterung von res.partner.action_archive und einem Assistenten (partner.archive.users.wizard), der als Dialog erscheint.

BausteinAufgabe
action_archive am KontaktSucht aktive Benutzer mit share = True, die am Kontakt oder (bei Firmen) an Kontakten der Firma hängen. Gibt es welche, wird statt zu archivieren der Dialog zurückgegeben.
AssistentSpeichert Firma und gefundene Benutzer, zeigt sie an und führt bei „Ja“ die Archivierung mit dem Kontextschlüssel archive_linked_users aus.
Kontext skip_archive_users_wizardSchaltet den Dialog aus. Dann gilt wieder die Prüfung von Odoo.
ZugriffDen Assistenten dürfen interne Benutzer (base.group_user) anlegen und nutzen.
ÜbersetzungDeutsch (de.po) und Vorlage (.pot) liegen bei.

Die Benutzer werden mit erhöhten Rechten gesucht und archiviert (sudo). Damit funktioniert der Dialog auch für Anwender ohne Zugriff auf die Benutzerverwaltung. Die Kehrseite steht unter Grenzen.

Ein Fund: Der Test war grün, der Dialog trotzdem kaputt

Das Modul hatte beim ersten Einsatz einen Fehler, den die automatischen Tests nicht fanden. Beim ersten Klick auf „Archivieren“ in der Oberfläche erschien statt des Dialogs der Odoo-Fehlerbildschirm mit Cannot read properties of undefined (reading 'map').

Die Ursache: Der Web-Client ruft action_archive direkt auf und führt eine zurückgegebene Aktion ohne weitere Aufbereitung aus. Dabei liest er zwingend den Schlüssel views der Aktion. Unsere Aktion hatte nur view_mode. Aktionen aus Knöpfen mit type="object" ergänzt der Server vorher (clean_action in call_button), den direkten Aufruf von action_archive nicht. Die Tests riefen die Methode nur in Python auf, und dort fiel das fehlende Feld nicht auf.

Der Fix ist eine Zeile ("views": [(False, "form")]), dazu kommt eine Prüfung im Test, die genau diesen Schlüssel verlangt. Dabei wurde nichts archiviert. Die Lehre: Wer eine Aktion aus einer Methode zurückgibt, die der Client direkt aufruft (action_archive, action_unarchive und ähnliche), sollte views immer mitgeben.

Installation

git clone https://github.com/Alex0176/odoo-partner-archive-users.git
ln -s /pfad/odoo-partner-archive-users/partner_archive_users /pfad/addons/
odoo-bin -c odoo.conf -d <datenbank> -i partner_archive_users --stop-after-init

Abhängigkeiten sind base und contacts. Nach dem Installieren muss der Odoo-Dienst neu gestartet werden, weil das Modul Python-Code enthält. Wer ein produktives System betreibt, installiert das Modul zuerst auf einer Kopie der Datenbank.

Grenzen

  • Berechtigung. Weil die Benutzer mit erhöhten Rechten archiviert werden, kann jeder, der einen Kontakt archivieren darf, über den Dialog auch die Portalzugänge dieser Firma archivieren. Für interne Benutzer greift das nicht. Wer Portalzugänge feiner absichern will, muss das Modul anpassen.
  • Kein automatisches Wiederherstellen. Wird die Firma später wieder aktiviert, bleiben die Benutzer archiviert. Sie müssen von Hand reaktiviert werden.
  • Nur Kontakte. Das Modul betrifft Firmen als Kontakte (res.partner). Das Archivieren einer Odoo-Firma (res.company) hat andere Prüfungen, zum Beispiel wenn sie noch die Standardfirma von Benutzern ist. Dafür ist das Modul nicht gedacht.
  • Nur Odoo 19.0 Community getestet. Für andere Versionen haben wir es nicht geprüft.

Häufige Fragen

Warum werden Mitarbeiter nicht mitarchiviert?

Ein interner Benutzer hat Rechte im System und ist meist mit eigenen Daten, Aufgaben und Berechtigungen verknüpft. Ihn als Nebenwirkung des Archivierens einer Firma zu sperren, ist uns zu riskant. Dafür bleibt es bei der Odoo-Fehlermeldung.

Kann ich die Rückfrage abschalten?

Im Code über den Kontext skip_archive_users_wizard. Eine Einstellung in der Oberfläche gibt es nicht. Wer das Modul deinstalliert, bekommt wieder das Standardverhalten von Odoo.

Unter welcher Lizenz steht es?

Unter der AGPL-3. Fehler und Verbesserungen sind als Issue im GitHub-Repository willkommen.

Unterstützung durch Biricon IT Services

Wir betreuen Odoo-Installationen für kleine und mittlere Unternehmen: von der Einführung über Anpassungen und Migrationen bis zum laufenden Betrieb. Wenn Sie Abläufe wie das Archivieren von Kundenfirmen in Odoo vereinfachen, ein Portal für Ihre Kunden einrichten oder ein Modul sicher in Ihre Produktivinstanz bringen möchten, helfen wir gerne. Weitere Eigenentwicklungen: Belegnummern aus Präfix, Jahr und Zähler, Firmenbuch und Adressprüfung für österreichische Kunden und Produkt-Sets im Angebot als Abschnitt.

Jetzt Kontakt aufnehmen

Stand: 3. November 2026. Modulversion 19.0.1.0.0 mit dem Fix vom selben Tag. Alle Namen und Anmeldenamen in den Abbildungen sind frei gewählt.