Files
Laufzettel/prisma/seed-daten/vorlagen/02-mitarbeiter-onboarding.json
T
Florian Wilde 7eb81bd191
Prüfung / pruefung (push) Canceled after 0s
Prüfung / pruefung (pull_request) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s
Prüfung / e2e (pull_request) Canceled after 0s
feat(seed): mitgelieferte Vorlagen am Schluessel erkennen
Der Seed erkannte seine sieben Vorlagen am Namen. Wer eine umbenannte, bekam
beim naechsten Lauf eine zweite -- und der Schnellstart stand auf der
Geraeteseite doppelt.

Vorlage.seedSchluessel traegt die Kennung, eindeutig wo gesetzt (partieller
Index, weil eigene Vorlagen keinen tragen). Das Austauschformat kennt das Feld
als seedSchluessel; nicht als schluessel, wie das Issue plante, denn so heisst
dort schon das Feld einer Variablen.

Der Rueckfall auf den Namen bleibt, sonst bekaeme eine Installation von vor
diesem Feld beim ersten Lauf danach genau die Dubletten, die es verhindern
soll. Wird sie so gefunden, traegt der Seed den Schluessel nach -- an der
Entwicklungsdatenbank gefahren: sieben nachgetragen, nichts neu angelegt.

Der Import setzt den Schluessel nicht, auch nicht wenn das Dokument ihn
mitbringt, und der Export schreibt ihn nicht: eine eingespielte Kopie soll
nicht den Platz des Originals einnehmen.

Gegenprobe gefahren: ohne die Suche am Schluessel werden vier Tests rot.

Closes #32
2026-10-04 16:48:30 +02:00

249 lines
12 KiB
JSON

{
"format": 1,
"name": "Mitarbeiter-Onboarding",
"seedSchluessel": "mitarbeiter-onboarding",
"beschreibung": "Neues Benutzerkonto im Active Directory oder in Entra ID anlegen, Hardware bereitstellen und den ersten Arbeitstag begleiten.",
"kategorie": "Benutzer",
"schlagworte": ["onboarding", "eintritt", "benutzerkonto", "active directory", "entra id"],
"struktur": {
"variablen": [
{
"schluessel": "konto_typ",
"beschriftung": "Kontotyp",
"typ": "AUSWAHL",
"optionen": ["Active Directory", "Entra ID"],
"pflicht": true
},
{
"schluessel": "vorname",
"beschriftung": "Vorname",
"typ": "TEXT",
"pflicht": true
},
{
"schluessel": "nachname",
"beschriftung": "Nachname",
"typ": "TEXT",
"pflicht": true
},
{
"schluessel": "upn",
"beschriftung": "UPN (User Principal Name)",
"typ": "TEXT",
"pflicht": true
},
{
"schluessel": "sam",
"beschriftung": "Anmeldename (sAMAccountName)",
"typ": "TEXT"
},
{
"schluessel": "mail",
"beschriftung": "Mail-Adresse",
"typ": "TEXT"
},
{
"schluessel": "abteilung",
"beschriftung": "Abteilung",
"typ": "TEXT",
"pflicht": true
},
{
"schluessel": "ou",
"beschriftung": "Ziel-OU (leer lassen: nimmt die Ziel-OU der Abteilung)",
"typ": "TEXT"
},
{
"schluessel": "gruppen",
"beschriftung": "Gruppen, kommagetrennt (leer lassen: nimmt die Standardgruppen der Abteilung)",
"typ": "TEXT"
},
{
"schluessel": "eintrittsdatum",
"beschriftung": "Eintrittsdatum",
"typ": "DATUM",
"pflicht": true
},
{
"schluessel": "vorgesetzter",
"beschriftung": "Vorgesetzter",
"typ": "TEXT"
}
],
"abschnitte": [
{
"titel": "Vorbereitung",
"schritte": [
{
"titel": "Anforderung vollständig: Abteilung, Vorgesetzter, Eintrittsdatum, benötigte Zugriffe, Hardware",
"hilfetext": "Eintritt am {{eintrittsdatum}} — bis dahin müssen Konto, Postfach und Gerät stehen. Fehlt eine dieser Angaben, steht der Lauf später fest. Einmal beim Vorgesetzten nachfragen ist billiger, als Konto, OU und Gruppen hinterher zu korrigieren.",
"pflicht": true
},
{
"titel": "Referenzbenutzer für Berechtigungen (falls genannt)",
"hilfetext": "Ein bestehendes Konto derselben Rolle als Vorbild für Gruppen und Ablagerechte. Nicht blind kopieren: gewachsene Sonderrechte wandern sonst mit. Ist keiner genannt, das hier vermerken.",
"typ": "TEXT",
"pflicht": true
},
{
"titel": "Namensschema geprüft: UPN {{upn}}, Anmeldename {{sam}}, Mail {{mail}}",
"hilfetext": "Vorschläge kommen aus den Namensregeln in den Einstellungen, OU und Gruppen aus der Abteilung. Vor dem Anlegen im Verzeichnis prüfen, ob der Name schon vergeben ist.",
"pflicht": true
}
]
},
{
"titel": "Konto anlegen (Active Directory)",
"schritte": [
{
"titel": "Konto anlegen",
"hilfetext": "Dieser Abschnitt gilt nur für den Kontotyp „Active Directory“ (gewählt: {{konto_typ}}). Trifft er nicht zu, wird er als Ganzes über „Abschnitt trifft nicht zu“ erledigt — nicht Schritt für Schritt abgehakt.\n\nDas Passwort im Befehl entsteht bei jeder Anzeige neu und wird nirgends gespeichert — weder im Schrittergebnis noch im Protokoll oder im Ausdruck. Deshalb: Befehl ausführen und das Passwort im selben Zug in den Passwortmanager übertragen.",
"typ": "BEFEHL",
"pflicht": true,
"konfig": {
"shell": "powershell",
"befehl": "New-ADUser -Name \"{{vorname}} {{nachname}}\" -GivenName \"{{vorname}}\" -Surname \"{{nachname}}\" `\n -DisplayName \"{{vorname}} {{nachname}}\" -SamAccountName \"{{sam}}\" -UserPrincipalName \"{{upn}}\" `\n -EmailAddress \"{{mail}}\" -Department \"{{abteilung}}\" -Path \"{{ou}}\" `\n -AccountPassword (ConvertTo-SecureString \"{{generiertes_passwort}}\" -AsPlainText -Force) `\n -ChangePasswordAtLogon $true -Enabled $true"
}
},
{
"titel": "Initialpasswort im Passwortmanager hinterlegt und sicher an den Benutzer bzw. Vorgesetzten übermittelt",
"hilfetext": "Das Passwort aus dem Befehl oben wird nicht gespeichert.",
"pflicht": true
},
{
"titel": "Gruppen zuweisen",
"hilfetext": "Setzt die Standardgruppen der Abteilung aus {{gruppen}}. Leerzeichen um die Kommata sind unschädlich, `Trim()` entfernt sie; die Gruppen müssen im Verzeichnis aber genau so heißen.",
"typ": "BEFEHL",
"konfig": {
"shell": "powershell",
"befehl": "\"{{gruppen}}\".Split(\",\") | ForEach-Object { Add-ADGroupMember -Identity $_.Trim() -Members \"{{sam}}\" }"
}
},
{
"titel": "Vorgesetzten setzen",
"hilfetext": "`{{vorgesetzter_sam}}` ist ein eingebauter Platzhalter und kommt aus dem Mitarbeiter am Lauf. Solange die Verknüpfung fehlt, den Anmeldenamen von {{vorgesetzter}} von Hand einsetzen.",
"typ": "BEFEHL",
"konfig": {
"shell": "powershell",
"befehl": "Set-ADUser -Identity \"{{sam}}\" -Manager \"{{vorgesetzter_sam}}\""
}
},
{
"titel": "Kontrolle",
"hilfetext": "Zeigt Name, UPN, Abteilung, Vorgesetzten und Gruppen in einer Liste. Die Ausgabe wirklich lesen: eine fehlende Gruppe fällt sonst erst als fehlender Zugriff auf.",
"typ": "BEFEHL",
"konfig": {
"shell": "powershell",
"befehl": "Get-ADUser -Identity \"{{sam}}\" -Properties MemberOf, Department, Manager | Format-List Name, UserPrincipalName, Department, Manager, MemberOf"
}
}
]
},
{
"titel": "Konto anlegen (Entra ID)",
"schritte": [
{
"titel": "Konto anlegen",
"hilfetext": "Dieser Abschnitt gilt nur für den Kontotyp „Entra ID“ (gewählt: {{konto_typ}}). Trifft er nicht zu, wird er als Ganzes über „Abschnitt trifft nicht zu“ erledigt — nicht Schritt für Schritt abgehakt.\n\n`Connect-MgGraph` fragt einmal nach Anmeldung und Zustimmung. Das Passwort im Befehl entsteht bei jeder Anzeige neu und wird nirgends gespeichert, also sofort weiterverarbeiten.",
"typ": "BEFEHL",
"pflicht": true,
"konfig": {
"shell": "powershell",
"befehl": "Connect-MgGraph -Scopes \"User.ReadWrite.All\",\"Group.ReadWrite.All\"\nNew-MgUser -DisplayName \"{{vorname}} {{nachname}}\" -GivenName \"{{vorname}}\" -Surname \"{{nachname}}\" `\n -UserPrincipalName \"{{upn}}\" -MailNickname \"{{sam}}\" -Department \"{{abteilung}}\" -UsageLocation \"DE\" `\n -AccountEnabled -PasswordProfile @{ Password = \"{{generiertes_passwort}}\"; ForceChangePasswordNextSignIn = $true }"
}
},
{
"titel": "Initialpasswort im Passwortmanager hinterlegt und sicher übermittelt",
"hilfetext": "Das Passwort aus dem Befehl oben wird nicht gespeichert und ist nach dem Verlassen der Ansicht nicht mehr abrufbar. Nie zusammen mit dem UPN im selben Kanal versenden.",
"pflicht": true
},
{
"titel": "Gruppen zuweisen",
"hilfetext": "Sucht jede Gruppe aus {{gruppen}} über ihren Anzeigenamen. Findet der Filter nichts, bleibt `$g` leer und der folgende Aufruf schlägt fehl — dann die Schreibweise prüfen.",
"typ": "BEFEHL",
"konfig": {
"shell": "powershell",
"befehl": "$u = Get-MgUser -UserId \"{{upn}}\"\n\"{{gruppen}}\".Split(\",\") | ForEach-Object { $g = Get-MgGroup -Filter \"displayName eq '$($_.Trim())'\"; New-MgGroupMember -GroupId $g.Id -DirectoryObjectId $u.Id }"
}
},
{
"titel": "Zugewiesene Lizenz",
"hilfetext": "Lizenz per Gruppe (gruppenbasierte Lizenzierung) oder `Set-MgUserLicense`.",
"typ": "TEXT",
"pflicht": true
}
]
},
{
"titel": "Konto, gemeinsam",
"schritte": [
{
"titel": "MFA-Registrierung vorbereitet bzw. durchgeführt",
"hilfetext": "Entweder ein befristeter Zugangspass für die Selbstregistrierung oder die gemeinsame Einrichtung am ersten Tag. Ohne MFA kommt der Benutzer bei bedingtem Zugriff nicht an sein Postfach.",
"pflicht": true
},
{
"titel": "Postfach erreichbar, Signatur eingerichtet",
"hilfetext": "Einmal anmelden und eine Testmail nach außen senden. Signatur nach der Vorgabe des Hauses, mit richtiger Schreibweise von Name und Funktion.",
"pflicht": true
},
{
"titel": "Zugänge zu Fachanwendungen angelegt",
"hilfetext": "Nur die Anwendungen, die die Rolle braucht — nicht alles, was der Referenzbenutzer im Laufe der Jahre angesammelt hat."
},
{
"titel": "Angelegte Fachanwendungs-Zugänge",
"hilfetext": "Je Zeile eine Anwendung mit Benutzername oder Rolle. Beim Offboarding wird genau diese Liste wieder abgearbeitet.",
"typ": "TEXT",
"konfig": {
"mehrzeilig": true
}
}
]
},
{
"titel": "Hardware",
"schritte": [
{
"titel": "Arbeitsplatzgerät bereitgestellt (eigener Lauf „PC Neuinstallation“ falls nötig)",
"hilfetext": "Gerät, Tag-Code und Inventarnummer gehören zusammen. Die Installation selbst läuft als eigener Lauf; hier wird nur festgehalten, dass das Gerät bereitsteht.",
"pflicht": true
},
{
"titel": "Telefon / Softphone eingerichtet",
"hilfetext": "Durchwahl vergeben, im Telefonbuch eingetragen und einmal in beide Richtungen getestet."
},
{
"titel": "Peripherie vorhanden (Monitor, Dockingstation, Headset)",
"hilfetext": "Am Arbeitsplatz aufgebaut und angeschlossen, nicht nur aus dem Lager geholt."
},
{
"titel": "Zutrittsmedium / Schlüssel beantragt",
"hilfetext": "Ausgabe und Rückgabe werden dokumentiert — beim Offboarding wird danach gefragt."
}
]
},
{
"titel": "Erster Tag",
"schritte": [
{
"titel": "Anmeldung gemeinsam mit dem Benutzer getestet",
"hilfetext": "Erstanmeldung mit Passwortwechsel und MFA am eigenen Gerät. Erst danach gilt das Konto als übergeben.",
"pflicht": true
},
{
"titel": "Kurzeinweisung: Passwortregeln, MFA, Datenablage, Ansprechpartner IT",
"hilfetext": "Kurz und mündlich, mit dem Hinweis, wo Daten hingehören und wie man die IT erreicht.",
"pflicht": true
},
{
"titel": "Dokumentation und Inventar aktualisiert",
"hilfetext": "Mitarbeiter, Gerät, Rufnummer und Zutrittsmedium eingetragen. Was hier fehlt, fehlt beim Offboarding auch.",
"pflicht": true
}
]
}
]
}
}