# Sync-Verhalten & Troubleshooting

Was docket von allein tut, sobald ein Projekt [verknüpft](https://docket.rocks/doku/jira-projekt-verknuepfen) ist, und was
du prüfst, wenn ein Ticket oder ein Zeiteintrag nicht stimmt.

---

## Wie oft synchronisiert docket mit Jira?

docket fragt Jira nach Zeitplan ab, statt auf eine Meldung von Jira zu warten:

| Was | Wie oft |
|---|---|
| **Neue & geänderte Jira-Tickets** (Titel, Status, Assignee, Fälligkeitsdatum, Priorität) | ca. alle **5 Minuten** |
| **Direkt in Jira erfasste Zeit** (wird nach docket importiert) | ca. alle **5 Minuten** |
| **Gelöschte oder aus dem Jira-Projekt verschobene Tickets** | einmal pro **Tag** (in docket geschlossen, getrackte Zeit bleibt) |
| **Erstimport** beim Verknüpfen eines Projekts | **sofort** im Hintergrund (bei großen Projekten dauert es etwas) |

**Zeit, die du in docket buchst, geht sofort nach Jira**, unabhängig von diesem Zeitplan. Sobald
du einen Zeiteintrag auf einem Jira-Ticket speicherst, bearbeitest oder löschst, aktualisiert
docket das Jira-Worklog direkt. Ist Jira kurz nicht erreichbar, versucht docket es automatisch
erneut.

---

## Kann ich versehentlich dieselbe Zeit doppelt übertragen?

**Nein.** Jeder docket-Zeiteintrag ist über eine gespeicherte ID mit genau **einem** Jira-Worklog
verbunden. Die erste Übertragung **legt** das Worklog **an**. Jede weitere (eine Bearbeitung,
**Vorhandene docket-Zeit jetzt mit Jira synchronisieren**, ein Doppelklick, ein automatischer Retry)
**aktualisiert dasselbe Worklog**. Du kannst den Sync-Button also beliebig oft drücken.

- **Eintrag in docket bearbeiten oder löschen:** Das Jira-Worklog wird mit aktualisiert bzw.
  gelöscht.
- **Von docket übertragenes Worklog in Jira bearbeiten:** docket übernimmt die Änderung nicht. Für
  in docket gebuchte Zeit ist **docket die Source of Truth**, deine nächste Bearbeitung in docket
  überschreibt die Jira-Seite wieder.
- **Nur in Jira erfasste Zeit** importiert docket schreibgeschützt, und Änderungen daran in Jira
  kommen in docket *sehr wohl* an.

---

## Was ist mit Leuten, die in Jira Zeit erfassen, aber keinen docket-Account haben?

Ihre Worklogs kommen trotzdem an. Was damit passiert, hängt von der Einstellung **Jira-Autoren
ohne docket-Account** der Verbindung ab (Administration → Integrationen → die Verbindung):

- **An (Standard), mit gewählter Leistung:** Kommt das erste Worklog eines solchen Jira-Accounts
  an, legt docket einen **Platzhalter-Nutzer** an und bucht die Zeit darauf. Sie zählt dann in
  Budgets, Controlling und Reports, zum Leistungssatz des Platzhalters. Platzhalter können sich
  nicht anmelden, belegen keinen Sitz und stehen getrennt vom Team unter **Administration → Nutzer →
  Jira-Platzhalter**. Dort kann ein Admin:
  - die **Leistung** ändern, zu der die Zeit eines Platzhalters abgerechnet wird (z. B.
    unterschiedliche Sätze für eine externe Agentur und einen Freelancer);
  - Worklogs **konvertieren**, die importiert wurden, bevor es den Platzhalter gab (bis dahin
    sind sie Nur-Lese-Zeilen, und docket konvertiert sie nie von selbst);
  - den Platzhalter mit einem echten Nutzer **zusammenführen**, sobald die Person einen
    docket-Account hat. Zeit, Ticket-Zuweisungen und Jira-Zuordnung wandern mit, der Platzhalter
    verschwindet.
- **Aus, oder keine Leistung gewählt:** Die Worklogs bleiben **Nur-Lese-Zeilen**. Du siehst sie pro
  Autor im Controlling des Projekts unter *Zeiteinträge*, aber ohne Satz und außerhalb von Budgets
  und Reports.

Die Zeit eines Platzhalters wird nur in Projekten konvertiert, deren Verknüpfung **Convert Jira
worklogs** aktiviert hat.

---

## Wie erscheinen Epics, Stories und Sub-Tasks?

**Jedes als eigenes docket-Ticket, Sub-Tasks unter ihrem Parent.** Jedes Jira-Issue im Scope (Epic,
Story, Task, Bug oder Sub-Task) wird als ein docket-Ticket gespiegelt. Zeit landet also genau dort,
wo sie in Jira erfasst wurde: auf einem Sub-Task, auf seinem Parent oder auf beiden. Doppelt
gezählt wird nichts.

- Ein **Sub-Task** steht im Jira-Abschnitt des Tickets-Tabs direkt unter seinem Parent, in der
  Ticket-Auswahl der Zeiterfassung als `ABC-12 › ABC-15`. Seine Ticketseite verlinkt den Parent.
  Die Seite des Parents listet seine Sub-Tasks und die **Zeit inkl. Sub-Tasks** (die Summe, die
  auch Jira zeigt).
- Sub-Tasks **zählen nicht** zu den offenen/geschlossenen Tickets eines Projekts (Punkte auf dem
  Dashboard, Projektliste). Ihre Zeit zählt ganz normal.
- Die Ticketseite zeigt den Jira-Issue-Typ. Epics und jede Gruppierung über Parent → Sub-Task
  hinaus bleiben in Jira. Bei einem Epic-Scope (siehe [Verknüpfung](https://docket.rocks/doku/jira-projekt-verknuepfen))
  wird das Epic selbst mitgespiegelt, damit darauf erfasste Zeit einen Platz hat.

---

## Und was ist mit offenen und geschlossenen (erledigten) Issues?

**Jira bestimmt den Status, docket folgt.** Ein gespiegeltes Ticket ist in docket **geschlossen**,
wenn sein Jira-Issue in einer **Done**-Statuskategorie ist, und bei jedem anderen Status **offen**.
Schließt du ein Issue in Jira oder öffnest es wieder, zieht das docket-Ticket beim nächsten Sync
nach (innerhalb weniger Minuten).

Gespiegelte Tickets sind in docket schreibgeschützt. Von docket aus fügst du nur getrackte Zeit
hinzu; Status und alles andere bearbeitest du in Jira.

- **Auch geschlossene Issues werden importiert.** Der erste Sync holt das ganze Jira-Projekt,
  erledigte Issues kommen also als geschlossene Tickets an, und die darauf erfasste Zeit bleibt in
  den Reports von docket sichtbar.
- **Die Auslastung ignoriert geschlossene Tickets.** Die Heatmap und die Zahlen zu „assigned tickets“
  zählen nur **offene** Tickets.
- **Auf ein geschlossenes Ticket kannst du weiter Zeit buchen.** Es bleibt in der Zeiterfassung
  auswählbar, und das Schließen eines Issues entfernt dessen Zeit nie aus Budget, Controlling oder
  Reports.
- Ein Issue, das aus dem Jira-Projekt **gelöscht oder herausverschoben** wird (nicht nur
  geschlossen), schließt der tägliche Check auch in docket, die Zeit bleibt erhalten.

---

## Troubleshooting

| Symptom | Was es bedeutet / was zu tun ist |
|---|---|
| Verbindung zeigt **Anmeldung fehlgeschlagen** | E-Mail oder Token des Service-Accounts sind falsch oder haben keinen Zugriff mehr. Ein Admin bearbeitet die Verbindung, gibt den Token neu ein und testet die Verbindung erneut. |
| Ein Zeiteintrag zeigt **Nicht in Jira — verbinde dein Jira-Konto** | Du hast deinen Jira-Account noch nicht verbunden. Der Link führt zu deinen Einstellungen (siehe [Teil 2 der Einrichtung](https://docket.rocks/doku/jira-verbindung-einrichten)). Sobald du verbunden bist, gehen wartende Einträge von selbst nach Jira. |
| Ein Zeiteintrag zeigt **Nicht in Jira — dein Jira-Konto ist noch nicht zugeordnet** | Die Verbindung bucht über **Tempo**, das Zeit in deinem Namen bucht. Deshalb muss ein Admin deinen Jira-Account zuordnen (Administration → Integrationen → die Verbindung → Nutzerzuordnung). Danach gehen wartende Einträge von selbst nach Jira. |
| Ein Zeiteintrag zeigt **Jira-Sync fehlgeschlagen** | Meist ein kurzer Jira-Aussetzer oder eine geänderte Berechtigung. Klicke auf **Erneut versuchen**. Schlägt es weiter fehl, prüfe in deinen Profileinstellungen, ob deine Jira-Verbindung für diese Site noch ✓ zeigt und ob du in Jira Zugriff auf das Projekt hast. |
| Mein Token zeigt **✗** bei einer Site | Dein Atlassian-Account kommt an diese Site nicht heran, oder du nutzt dort einen anderen Account. Hinterlege einen Token, der *auf diese Verbindung beschränkt* ist, oder bitte den Admin um Zugriff. |
| Ein Jira-Ticket erscheint nicht in docket | Neue Issues kommen innerhalb weniger Minuten an. Erscheint es nie, prüfe, ob das Issue im verknüpften Jira-Projekt liegt und das Verbindungs-Badge grün ist. |
| Ein verknüpftes Projekt zeigt **gar keine Jira-Tickets** | Der Jira-Account der Verbindung darf die Issues des Projekts nicht sehen, und Jira antwortet dann mit einer leeren Liste statt mit einem Fehler. Unter Projekt → Einstellungen → Jira steht das rot. Füge den Account in Jira dem Projekt hinzu (*Project settings → Access*, z. B. bei team-managed Projekten) oder gib ihm die Berechtigung **Browse projects**. Die Tickets kommen mit dem nächsten Sync oder sofort mit **Tickets jetzt aus Jira synchronisieren** auf dieser Einstellungsseite. |
| Die Tabs Boards / Roadmap sind verschwunden | Gewollt: Im Projekt steht der Ticketbereich auf *Jira ersetzt ihn*, die Planung läuft also in Jira. Stell den Ticketbereich auf *Jira ergänzt ihn* (Projekt → Einstellungen → Jira), um docket-eigene Tickets, Boards und Roadmap neben den Jira-Tickets zu behalten, oder heb die Verknüpfung auf (Verknüpfung lösen). |
| Ich habe ein Projekt entknüpft. Sind Daten verloren? | Nein. Alle getrackte Zeit und jedes gespiegelte Ticket mit gebuchter Zeit bleiben erhalten. Nur leere gespiegelte Tickets (keine Zeit gebucht, nichts importiert) werden entfernt. Der Sync stoppt. |
| Ich habe die Jira-Verbindung gelöscht. Sind Daten verloren? | Nein. Jedes verknüpfte Projekt wird genauso entknüpft, und die aus Jira importierten Stunden bleiben im Controlling. Verbindest du dieselbe Jira-Site erneut, werden sie übernommen statt doppelt importiert. |
| Ich habe das falsche Jira-Projekt verknüpft | Heb die Verknüpfung auf (Verknüpfung lösen) und verknüpfe das richtige. Leere importierte Tickets werden automatisch aufgeräumt. Wurde schon Zeit gebucht, siehe [falsches Jira-Projekt verknüpft](https://docket.rocks/doku/jira-projekt-verknuepfen). |
| Ein Zeiteintrag wurde auf das falsche Projekt/Ticket gebucht | Wähle unter **Zeiterfassung → Berichte** die Einträge aus und nutze **Verschieben**. Bei Jira-gespiegelten Tickets zieht das Worklog mit um (am alten Issue entfernt, am neuen angelegt). |

---

Du kommst nicht weiter? Starte noch einmal beim [Überblick](https://docket.rocks/doku/jira-integration) oder wirf einen
Blick in die [Einrichtung der Verbindung](https://docket.rocks/doku/jira-verbindung-einrichten).