Migration eines eigenständigen Teams in eine Organization
Diese Anleitung führt durch die Migration eines bestehenden, eigenständigen Teams in deine neue Organization.
Da eine einheitliche Governance voraussetzt, dass alle Team-Mitglieder auch Mitglieder der Organization sind, kann die Migration manchmal ins Stocken geraten, wenn das Team externe Nutzer enthält. Dieses Tutorial zeigt, wie ein solcher Konflikt über die API gelöst werden kann.
Szenario-Übersicht
Du bist Organization-Admin. Du hast ein bestehendes Team (teamId: 42), das du in deine Organization verschieben möchtest. Allerdings sind zwei Nutzer in diesem Team ([email protected] und [email protected]) noch nicht Teil deiner Organization. Alice soll erhalten bleiben, Bob hingegen darf im Zuge des Umzugs aus dem Team entfernt werden.
Bevor das Team migriert werden kann, muss die Ziel-organizationId bekannt sein. Dazu rufen wir eine Liste aller Organizations ab, denen wir angehören.
- Endpunkt:
GET /organizations - Aktion: Suche deine Ziel-Organization im Antwort-Array und kopiere deren
id(z. B.123e4567-e89b-12d3-a456-426614174000).
Wir versuchen, das Team zu migrieren. Da wir auf der sicheren Seite bleiben wollen, lassen wir das force-Flag weg (das standardmäßig auf false steht).
-
Endpunkt:
POST /teams/42/migrate -
Payload:
{"organizationId": "123e4567-e89b-12d3-a456-426614174000"} -
Ergebnis: Die API lehnt die Anfrage ab, da Alice und Bob nicht Mitglieder der Organization sind. Du erhältst einen
400 Bad Requestmit folgendem Fehlerdetail:Cannot migrate team to organization because the following team members are not members of the new organization: [email protected], [email protected]. Either add the members to the organization before migrating, or use the force option to remove them from the team and proceed with the migration.
Wir entscheiden, dass Alice im Team bleiben soll, und müssen sie deshalb zunächst in die übergeordnete Organization einladen.
- Endpunkt:
POST /organizations/123e4567-e89b-12d3-a456-426614174000/members - Payload:
{"role": "member"}
- Ergebnis: Alice ist nun offiziell Teil der Organization.
Wir möchten Bob nicht zu unserer Organization hinzufügen. Wir akzeptieren, dass er nach der Migration keinen Zugriff mehr auf das Team hat. Wir rufen den Migrationsendpunkt erneut auf, diesmal mit explizit gesetztem force: true.
- Endpunkt:
POST /teams/42/migrate - Payload:
{"organizationId": "123e4567-e89b-12d3-a456-426614174000","force": true}
- Ergebnis: Erfolg!
HTTP 200 OK. Das Team wird in die Organization verschoben. Bob wird automatisch aus dem Team entfernt, während Alice Team-Mitglied bleibt.
Abschließend prüfen wir die Team-Liste unserer Organization, um sicherzustellen, dass das bestehende Team nun korrekt in unsere Governance-Struktur eingebunden ist.
- Endpunkt:
GET /organizations/123e4567-e89b-12d3-a456-426614174000/teams - Ergebnis: Das Antwort-Array enthält nun das neu migrierte Team.