# Von Redmine wechseln

Einen Redmine-Importer gibt es nicht. Die Struktur legst du von Hand an, Tickets, Kommentare und
Zeiten bringst du mit einem eigenen Skript über die REST-API herüber. Diese Seite zeigt, was
wozu passt, was verloren geht und wie du den Umzug planst.

## Was wozu passt

| Redmine | Lalabase |
|---|---|
| Projekt | [Projekt](https://lalabase.com/docs/de/guides/basics/first-project) in einer Organisation. Agenturen führen meist eine Organisation pro Kunde |
| Unterprojekt | Keine Entsprechung. Nimm getrennte Projekte oder ein Projekt mit Tags |
| Ticket | [Ticket](https://lalabase.com/docs/de/guides/basics/tickets) |
| Tracker | Ein Ticketfeld deiner Wahl, zum Beispiel ein Auswahlfeld „Typ“ |
| Status, Priorität | [Ticketfelder](https://lalabase.com/docs/de/guides/ticket-views/custom-fields-tags), pro Projekt konfiguriert |
| Benutzerdefinierte Felder | Ticketfelder: Auswahl, Mehrfachauswahl, Checkbox, Text, Datum. Felder an Projekten oder Benutzern gibt es nicht |
| Kategorie | Auswahlfeld, das ein Skript füllen kann, oder ein Tag |
| Zielversion | Auswahlfeld. Eigene Versions- oder Roadmap-Seiten gibt es nicht |
| Unteraufgaben | Unteraufgaben, eine Ebene tief |
| Zugehörige Tickets | [Ticket-Beziehungen](https://lalabase.com/docs/de/guides/basics/ticket-relations) |
| Beobachter | Follower |
| Rollen | [Rollen](https://lalabase.com/docs/de/guides/team/roles-permissions), pro Organisation |
| Wiki | [Wissen](https://lalabase.com/docs/de/guides/knowledge/organize-notes), mit [versionierten Notizen](https://lalabase.com/docs/de/guides/knowledge/versioning) |
| Dateien, Dokumente | [Dokumente](https://lalabase.com/docs/de/guides/documents/manage-files) |
| Zeitbuchungen | [Zeiterfassung](https://lalabase.com/docs/de/guides/features/time-tracking), jede Buchung einzeln abrechenbar |
| Repositories | [Verbundene Repositories](https://lalabase.com/docs/de/guides/repositories/connect) |

## Was Lalabase nicht hat

Prüf das zuerst. Hängst du an einem dieser Punkte, bleibt Redmine vielleicht die bessere Wahl.

- **Tickets per Mail anlegen.** Lalabase verschickt Mail, liest aber keine.
- **Gantt-Diagramm und Kalender.** Es gibt Liste und Board.
- **Foren und News.**
- **Plugins.** Ein Plugin-System gibt es nicht. Für eigene Werkzeuge gibt es die REST-API und
  [MCP](https://lalabase.com/docs/de/mcp/introduction/overview).
- **Zeit-Aktivitäten.** Eine Buchung hat eine Beschreibung, aber keine Art wie „Design“.

## Was ein Skript mitnehmen kann

Die REST-API liegt unter `/api/v1` und braucht einen [Zugriffstoken](https://lalabase.com/docs/de/guides/ai/personal-access-tokens),
der schreiben darf. Eine öffentliche Referenz gibt es noch nicht. Jeder Schreibzugriff zählt für
den Besitzer des Tokens, und pro Token sind 60 Anfragen in der Minute erlaubt.

| Daten | Über die API | Was verloren geht |
|---|---|---|
| Tickets | `POST /api/v1/projects/:project_id/tickets`: Titel, Beschreibung, Eltern-Ticket, Zuständige, Felder | Autor und Erstelldatum: Autor bist du, Datum ist heute. Nummern werden neu vergeben |
| Kommentare | `POST /api/v1/tickets/:ticket_id/posts`, als HTML oder mit `format: plain` | Autor und Datum, wie bei Tickets |
| Zeiten | `POST /api/v1/tickets/:ticket_id/time_sessions` mit Datum und Dauer | Die Person: Jede Buchung landet beim Besitzer des Tokens |
| Tags, Ticket-Beziehungen | Nicht möglich | Nimm statt Tags ein Auswahlfeld und setz Beziehungen von Hand. Bei Tags hilft die [Massenbearbeitung](https://lalabase.com/docs/de/guides/ticket-views/bulk-edit) |
| Anhänge | Nicht möglich | Von Hand hochladen oder verlinken |
| Wiki | Nicht möglich | Wichtige Seiten von Hand übernehmen |
| Projekte, Felder, Benutzer | Nicht möglich | Vorher in der Web-App anlegen |
| Änderungsverlauf | Nicht möglich | Der Verlauf der Statuswechsel bleibt zurück |

Drei Dinge ersparen dir später Ärger:

- Leg ein Textfeld „Redmine-ID“ an und füll es, damit alte Nummern auffindbar bleiben.
- Schreib den ursprünglichen Autor und das Datum in die erste Zeile jeder Beschreibung und
  jedes Kommentars.
- Wandle Textile oder Markdown in deinem Skript in HTML um. Lalabase liest beides nicht.

Sollen die Buchungen pro Person erhalten bleiben, lass den Zeitimport mit einem Token pro Person
laufen. Jede Person erstellt dafür ihren eigenen Token.

## Den Umzug planen

1. **An einem Projekt ausprobieren.** Nimm ein kleines, abgeschlossenes und beurteile das
   Ergebnis mit deinem Team.
2. **Die Struktur anlegen.** Lege Organisationen, Projekte, Ticketfelder und Rollen an und lade
   die Leute ein. Die Einladungen brauchen funktionierenden Mailversand.
3. **Entscheiden, wie viel mitkommt.** Offene Tickets und die Zeiten des laufenden
   Abrechnungszeitraums reichen oft. Für alles andere bleibt das alte Redmine schreibgeschützt.
4. **Den Import laufen lassen**, erst Tickets, dann Kommentare, dann Zeiten. Protokolliere, welche
   Redmine-ID zu welchem Ticket wurde, damit ein abgebrochener Lauf weitermachen kann.
5. **Prüfen und umschalten.** Vergleiche pro Projekt die Zahl der Tickets und die gebuchten
   Stunden mit Redmine, dann schalte Redmine auf schreibgeschützt.
