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+.
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 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:
- GitLab-Instanz-URL ohne Trailing Slash (z. B.
gitlab.example.com) - Personal Access Token mit Scope
api - Verbindung testen, dann Sync-Optionen aktivieren (Tasks, Time Tracking, Cron)
Für produktiven Einsatz empfehlen wir einen dedizierten Service-Account statt eines persönlichen Tokens.
Berechtigungen vergeben
Unter Benutzer » [User] » Rechte:
doligitlab → read— Projekte, Gruppen, Issues, Wiki sehendoligitlab → write— Zuweisungen pflegendoligitlab → admin— Modul-Konfiguration öffnendoligitlab → releases → download— Release-Assets laden
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
| Komponente | Version |
|---|---|
| Dolibarr | 20.0 oder höher |
| PHP | 8.0 oder höher, mit cURL-Extension |
| GitLab | Beliebige Version mit API v4 |
| Access Token | Personal 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.
| Ereignis | Richtung | Trigger |
|---|---|---|
| GitLab-Issue erstellt | GL → DOL | Cron (Auto-Import) oder manuell |
| GitLab-Issue geändert | GL → DOL | Cron oder manueller Sync |
| Dolibarr-Ticket bearbeitet | DOL → GL | Automatisch (Dolibarr-Trigger) |
| Dolibarr-Ticket geschlossen | DOL → GL | Automatisch (Dolibarr-Trigger) |
| Dolibarr-Ticket wiedereröffnet | DOL → GL | Automatisch (Dolibarr-Trigger) |
| Dolibarr-Ticket gelöscht | DOL → GL | Automatisch (schließt GitLab-Issue) |
| Zeit in Dolibarr geloggt | DOL → GL | Automatisch (Dolibarr-Trigger) |
| Zeit in GitLab geloggt | GL → DOL | Cron 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:
| Bereich | Endpoints |
|---|---|
| Authentifizierung | GET /user |
| Projekte | GET /projects, GET /projects/:id, GET /groups/:id/projects |
| Gruppen | GET /groups, GET /groups/:id |
| Releases | GET /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 Tracking | GET /time_stats, POST /add_spent_time, POST /time_estimate, POST /reset_spent_time |
| Wiki | GET /projects/:id/wikis, GET /groups/:id/wikis |
Troubleshooting
- Verbindung scheitert: Trailing Slash in der GitLab-URL prüfen, Token-Scope
api, Firewall/DNS, PHP-cURL aktiv. - Cron läuft nicht: „Scheduled Jobs“-Modul aktiv? System-Cron ruft
cron_run_jobs.php? Status in Setup → Scheduled Jobs, Logs indocuments/dolibarr.log. - Sync-Konflikte: GitLab gewinnt per Default. Konflikte sind in der Sync-Map mit
conflictmarkiert; manueller Re-Sync löst sie auf. - Keine Projekte sichtbar: User-Zuweisungen kontrollieren (GitLab → Assignments), Token-Zugriff auf die Ressourcen prüfen,
doligitlab → readgesetzt.
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.
GitLab (Source of Truth)
Repository inkl. Code, Issues, CI/CD und Release-Tags. Pfad vor Publish bestätigen.
MIT-Lizenz. Self-host, fork, contribute. Kein Service-Pitch.