Dolibarr-Modul · doligitlab · MIT

DoliGitlab — Dolibarr und GitLab, bidirektional verzahnt.

Dolibarr-ERP/CRM-Modul mit tiefer GitLab-Integration: Issues ↔ Tickets, Time Tracking, Releases, Wikis — alles benutzerbasiert zugewiesen, automatisiert per Trigger und Cron. MIT-Lizenz, Dolibarr 20+, PHP 8+.

Das Problem

Wenn ERP und Dev-Tooling sich nicht kennen.

Mit DoliGitlab

  • Bidirektionale Issue/Ticket-Sync mit Trigger-basierten Updates und Konflikt-Lösung
  • Time Tracking automatisch synchronisiert (Trigger Dolibarr → GitLab, Cron GitLab → Dolibarr)
  • Release-Browser im Dolibarr-Backend mit Download-Button (zip/tar.gz/Assets)
  • Wiki-Viewer für GitLab-Project- und Group-Wikis direkt in Dolibarr
  • User-/Gruppen-Zuweisungen — jeder sieht nur, was zugeteilt wurde

Bisher

  • Tickets in Dolibarr, Issues in GitLab — manuell synchron gehalten
  • Time Tracking doppelt: einmal im Dev-Tool, einmal für Abrechnung
  • Releases für Kunden zum Download manuell bereitgestellt
  • Kein zentralisierter Wiki-Zugriff, kein granular kontrollierter GitLab-Zugang pro Dolibarr-User

Vier Funktionsblöcke

Wiki-Viewer & granulare Zuweisung

GitLab-Project- und Group-Wikis werden direkt in Dolibarr gerendert (Markdown-Support). Sichtbarkeit folgt der User/Gruppen-Zuweisung — wer kein Recht auf das GitLab-Projekt hat, sieht weder Issues noch Wiki noch Releases.

Time Tracking & Releases

In Dolibarr gebuchte Stunden landen automatisch am verlinkten GitLab-Issue (Spent Time + Estimate). Release-Browser zeigt Releases aller zugewiesenen GitLab-Projekte mit Download-Button und Markdown-gerenderten Release-Notes.

Cron-Sync mit Auto-Import

Konfigurierbarer Cron (5 Min bis 24h Intervall) synchronisiert alle bestehenden Mappings und kann optional neue GitLab-Issues automatisch in Dolibarr anlegen. Status, Lauftag und Output direkt in den Modul-Settings sichtbar.

Bidirektionale Issue/Ticket-Sync

GitLab-Issues werden als Dolibarr-Helpdesk-Tickets importiert; Änderungen fließen automatisch zurück (per Dolibarr-Trigger). Mapping-Tabelle persistiert die Verbindung, Sync-Status (synced/pending/conflict/error) pro Issue sichtbar.

Installation: Modul in htdocs/custom/doligitlab kopieren · MIT-Lizenz

Dolibarr: 20.0+ · PHP: 8.0+ · Erforderlich: PHP cURL Extension · GitLab: beliebige Version mit API v4, Token mit api-Scope

Modul nach htdocs/custom/doligitlab kopieren, im Dolibarr-Backend unter „Home → Setup → Modules“ aktivieren, GitLab-URL und Token im Setup-Dialog eintragen — fertig. Für Auto-Sync zusätzlich Dolibarr-Cron aktivieren und im DoliGitlab-Setup „Enable Cron Sync“ einschalten.

Installation und Setup

Modul installieren

 

cp -r doligitlab /pfad/zu/dolibarr/htdocs/custom/doligitlab

 

Anschließend in Dolibarr unter Startseite → Setup → Module/Anwendungen nach „DoliGitlab“ suchen und aktivieren.

GitLab-Verbindung konfigurieren

Unter Setup → Module → DoliGitlab Setup:

Für produktiven Einsatz empfehlen wir einen dedizierten Service-Account statt eines persönlichen Tokens.

Berechtigungen vergeben

Unter Benutzer » [User] » Rechte:

Cron einrichten

Für automatische Synchronisation muss das Dolibarr-Cron-System aktiv sein. System-Cron eintragen:

 

*/5 * * * * /usr/bin/php /pfad/zu/dolibarr/htdocs/cron/cron_run_jobs.php securitykey=YOUR_CRON_KEY >/dev/null 2>&1

 

Im DoliGitlab-Setup dann Cron-Sync aktivieren, Frequenz wählen (Standard 15 Minuten) und optional Auto-Import neuer Issues aktivieren.

Voraussetzungen

KomponenteVersion
Dolibarr20.0 oder höher
PHP8.0 oder höher, mit cURL-Extension
GitLabBeliebige Version mit API v4
Access TokenPersonal Access Token mit api-Scope

Sync-Verhalten und Konflikte

Die bidirektionale Synchronisation bildet Änderungen aus beiden Welten ab — manche über Dolibarr-Trigger sofort, andere über den Cron-Lauf.

EreignisRichtungTrigger
GitLab-Issue erstelltGL → DOLCron (Auto-Import) oder manuell
GitLab-Issue geändertGL → DOLCron oder manueller Sync
Dolibarr-Ticket bearbeitetDOL → GLAutomatisch (Dolibarr-Trigger)
Dolibarr-Ticket geschlossenDOL → GLAutomatisch (Dolibarr-Trigger)
Dolibarr-Ticket wiedereröffnetDOL → GLAutomatisch (Dolibarr-Trigger)
Dolibarr-Ticket gelöschtDOL → GLAutomatisch (schließt GitLab-Issue)
Zeit in Dolibarr geloggtDOL → GLAutomatisch (Dolibarr-Trigger)
Zeit in GitLab geloggtGL → DOLCron oder manueller Sync

Konflikt-Auflösung

Wenn beide Seiten zwischen zwei Sync-Läufen geändert wurden, gewinnt standardmäßig GitLab. Konflikte werden im Sync-Map-Eintrag mit Status conflict markiert und im Backend sichtbar gemacht. Manuelles Re-Sync in der gewünschten Richtung löst den Konflikt auf.

Sync-Status pro Issue

Jeder verknüpfte Issue hat einen sichtbaren Status: synced, pending_gl, pending_dol, conflict, error. Der Status sitzt in der Mapping-Tabelle llx_doligitlab_sync_map und ist auch in der Sync-Übersicht im Backend einsehbar.

Datenbank, Berechtigungen, API

Datenbank-Tabellen

Das Modul legt zwei Tabellen mit Präfix llx_doligitlab_ an. Beide werden bei Modul-Aktivierung automatisch erzeugt.

llx_doligitlab_user_assignment — Mapping zwischen Dolibarr-Usern und GitLab-Projekten/-Gruppen. Felder: fk_user, gitlab_id, gitlab_type (project/group), gitlab_name, gitlab_path, gitlab_url, plus Audit-Felder date_creation, fk_user_creat.

llx_doligitlab_sync_map — Bidirektionaler Sync-State zwischen GitLab-Issues und Dolibarr-Tickets/-Tasks. Felder unter anderem: gitlab_project_id, gitlab_issue_iid, dolibarr_type, dolibarr_id, last_gitlab_update, last_dolibarr_update, last_sync, sync_direction, sync_status.

Verwendete GitLab-API-Endpoints

Das Modul spricht ausschließlich GitLab REST API v4. Eine Übersicht der genutzten Endpoints:

BereichEndpoints
AuthentifizierungGET /user
ProjekteGET /projects, GET /projects/:id, GET /groups/:id/projects
GruppenGET /groups, GET /groups/:id
ReleasesGET /projects/:id/releases, GET /projects/:id/releases/:tag
Issues (Read)GET /projects/:id/issues, GET /projects/:id/issues/:iid, GET /groups/:id/issues
Issues (Write)POST /projects/:id/issues, PUT /projects/:id/issues/:iid
Time TrackingGET /time_stats, POST /add_spent_time, POST /time_estimate, POST /reset_spent_time
WikiGET /projects/:id/wikis, GET /groups/:id/wikis

Troubleshooting

Quellcode & Repo

Lizenz & Issues

MIT-Lizenz · Copyright Moselwal Digitalagentur GmbH 2026. Bug-Reports und Pull Requests über das jeweilige Repo.

Dolibarr Marketplace

Aktuell nicht im offiziellen Dolistore — Installation über direktes Kopieren in htdocs/custom.

GitHub-Mirror (sofern vorhanden)

Falls ein öffentlicher Mirror existiert: github.com/moselwal/doligitlab — Platzhalter, vor Publish prüfen.

github.com/moselwal/doligitlab

GitLab (Source of Truth)

Repository inkl. Code, Issues, CI/CD und Release-Tags. Pfad vor Publish bestätigen.

gitlab.moselwal.io

MIT-Lizenz. Self-host, fork, contribute. Kein Service-Pitch.