-
Notifications
You must be signed in to change notification settings - Fork 0
Server Umstieg von SmallTime PHP
Für wen ist diese Seite? Für dich, wenn deine Firma bisher die alte Version SmallTime PHP benutzt hat und die Daten (Personen, Stempelzeiten, Absenzen, Salden) in SmallTime 2027 übernehmen möchte. Du solltest die Seite Installation Schritt für Schritt kennen.
- So funktioniert die Übernahme
- Der Stichtag
- Schritt 1: Den Ordner convert anlegen und füllen
- Schritt 2: convert.json – deine Entscheide
- Schritt 3: Starten – die Übernahme läuft automatisch
- Schritt 4: Den Bericht lesen
- mapping.json – Personen zusammenführen
- Was mit den alten Monaten passiert
- Salden, wenn der Stichtag in der Zukunft liegt
- Was du danach prüfen solltest
- Die Übernahme wiederholen
Du kopierst die Daten der alten Installation in einen Ordner namens convert im SmallTime-Ordner. Startet SmallTime mit einer leeren Datenbank, liest es diesen Ordner und übernimmt alles automatisch. Du musst dafür keinen besonderen Befehl eingeben.
Übernommen werden:
- alle Personen aus der alten Benutzerliste, mit Login, Name, Gruppen und Admin-Recht
- Arbeitsmodelle (Pensum, Wochenstunden, Arbeitstage, Ferienanspruch, Feiertage, Zuschläge)
- alle Stempelzeiten, Absenzen, Tagesrapporte, Auszahlungen und die PDF-Monatsrapporte
- Personalien, RFID-Badges
- Firmeneinstellungen: Firmenname, Land, Pausenregeln, Firmenfeiertage, Rechte
Note
Die bisherigen Passwörter funktionieren weiter, aber nur 60 Tage lang ab der Übernahme. Bei der ersten Anmeldung muss jede Person ein neues Passwort wählen. Es gibt nach einer Übernahme kein Konto admin / admin1234. Du meldest dich mit deinem alten Admin-Login an.
Der Stichtag ist der Tag, ab dem SmallTime 2027 die Zeiten selber rechnet. Er ist immer der erste Tag eines Monats, zum Beispiel der 1. Januar 2027.
- Vor dem Stichtag gelten die Werte der alten Version (Archiv).
- Ab dem Stichtag rechnet SmallTime 2027. Der Zeit- und Feriensaldo der alten Version wird als Eröffnungssaldo am Stichtag übernommen.
Gibst du keinen Stichtag an, nimmt SmallTime den ersten Tag des nächsten Monats.
Tip
Wähle einen Monatsanfang, an dem die alte Version bis zum Vortag noch läuft. Schalte SmallTime PHP erst am Stichtag ab.
- Lege im SmallTime-Ordner (dort, wo
app.cjsliegt) einen neuen Ordnerconvertan, also zum BeispielC:\SmallTime\convert. - Öffne die alte SmallTime-PHP-Installation (auf dem alten Webserver oder per FTP).
- Kopiere den ganzen Ordner
Datanachconvert. Darin liegenusers.txt,group.txtund ein Unterordner pro Person (auch die mit_del_beginnenden gelöschten Personen). - Kopiere den Ordner
include/Settingsso, dass er inconvert/include/Settingsliegt. Darin liegensettings.txt,pausen.txt,feiertage.txtundmultilogin.xml.
So muss es danach aussehen:
C:\SmallTime\
├── app.cjs
├── config\
├── dist\
├── public\
└── convert\
├── convert.json (optional, siehe Schritt 2)
├── Data\
│ ├── users.txt
│ ├── group.txt
│ ├── Anna\ …
│ └── _del_2024.12.03_Beat\ …
└── include\
└── Settings\
├── settings.txt
├── pausen.txt
├── feiertage.txt
└── multilogin.xml
Important
Ohne die Datei convert/Data/users.txt erkennt SmallTime keine alte Installation und übernimmt nichts.
Warning
Kopiere die Daten, verschiebe sie nicht. Die alte Installation muss bis zum Stichtag weiterlaufen.
Die Datei convert/convert.json ist freiwillig. Ohne sie gelten die Standardwerte. Lege sie mit dem Editor an, wenn du etwas anders haben willst. Beispiel:
{
"cutoverDate": "2027-01-01",
"timeZone": "Europe/Zurich",
"calendarCode": "CH",
"autoImport": true
}| Eintrag | Bedeutung | Standard, wenn nicht angegeben |
|---|---|---|
cutoverDate |
Der Stichtag. Muss ein Monatserster sein, Schreibweise JJJJ-MM-01. |
erster Tag des nächsten Monats |
timeZone |
Zeitzone deiner Firma, z. B. Europe/Zurich, Europe/Berlin, Europe/Vienna, Europe/Vaduz
|
aus dem Land in den alten Einstellungen |
calendarCode |
Feiertagskalender: CH, DE, AT oder LI
|
aus dem Land in den alten Einstellungen |
autoImport |
true = automatisch übernehmen, false = nicht übernehmen |
true |
legacyTimeZone |
Zeitzone, in der die alte Version ihre Zeiten gespeichert hat. Nur ändern, wenn der Hersteller es sagt. | Europe/Paris |
Warning
Achte auf die Anführungszeichen und Kommas genau wie im Beispiel. Nach dem letzten Eintrag steht kein Komma. Ist die Datei fehlerhaft, bricht die Übernahme ab und im Konsolenfenster steht convert.json is invalid.
- Stelle sicher, dass es noch keine Datenbank gibt: Im SmallTime-Ordner darf es noch keinen Ordner
datamit einer Dateiapp.sqlitegeben. (Bei einer ganz neuen Installation ist das so.) - Starte SmallTime wie gewohnt mit
npm start(siehe Installation). - Im Konsolenfenster erscheint
starting automatic importund etwas späterImport run 1 finished: … users, … stamps …. Je nach Datenmenge dauert das einige Sekunden bis wenige Minuten. - Danach startet SmallTime normal.
Wann läuft die Übernahme? Nur wenn alle diese Punkte zutreffen:
- In der Datenbank gibt es noch keine Person und noch keine frühere Übernahme.
-
convert/Data/users.txtist vorhanden. - In
convert.jsonsteht nicht"autoImport": false.
Warning
Hast du SmallTime schon einmal ohne den Ordner convert gestartet, gibt es bereits das Konto admin. Dann ist die Datenbank nicht mehr leer und die Übernahme läuft nicht mehr. Lösung: siehe Die Übernahme wiederholen.
Note
Geht bei der Übernahme etwas schief (zum Beispiel zwei Personen mit dem gleichen Login), wird nichts übernommen. SmallTime startet trotzdem, aber leer, mit dem Konto admin / admin1234. Den Grund findest du im Bericht (Schritt 4). Fehler beheben und die Übernahme wiederholen.
Nach jeder Übernahme liegen im Ordner convert zwei neue Dateien:
-
conversion-report.md– der Bericht zum Lesen (öffnen mit dem Editor oder einem Markdown-Programm) -
conversion-report.json– dieselben Angaben für Programme
Der Bericht enthält:
- eine Zusammenfassung: wie viele Personen, Gruppen, Stempel, Absenzen, Rapporte und Dokumente übernommen wurden
- ignorierte Ordner und Dateien mit Grund
- zusammengeführte Ordner (siehe mapping.json)
- Datenqualität: doppelte Stempel, übersprungene Stempel, offene Tage ohne «Gehen», mehrere Absenzen am gleichen Tag, unbekannte Absenzkürzel
- einen Saldo-Vergleich pro Person zwischen alter und neuer Berechnung
Note
Abweichungen im Saldo-Vergleich sind normal (zum Beispiel wegen einer früher anderen Pausenregel). Sie haben keinen Einfluss auf die Salden, denn am Stichtag gilt der Saldo der alten Version.
Warning
Der Bericht enthält Namen und Daten deiner Mitarbeitenden. Gib ihn nicht weiter und lösche den Ordner convert, wenn die Übernahme abgeschlossen und geprüft ist.
In SmallTime PHP wurde eine Person manchmal gelöscht (_del_…-Ordner) und später neu angelegt. Damit ihre alten Zeiten nicht verloren gehen, kann SmallTime diese Ordner zu einer Person zusammenführen.
Fehlt die Datei convert/mapping.json, schreibt SmallTime bei der Übernahme einen Vorschlag. Ein Vorschlag sieht so aus:
{
"mergeFolders": [
{
"target": "Beat",
"sources": ["_del_2024.12.03_Beat_Vollzeit"],
"confirmed": false,
"note": "proposed by name similarity"
}
],
"absenceCodeMap": { "F": "VAC", "K": "SICK", "…": "…" },
"ignoreFolders": ["Beat - Kopie"]
}| Teil | Bedeutung |
|---|---|
mergeFolders |
target = Ordner der aktiven Person, sources = alte Ordner, die dazugehören. Nur mit "confirmed": true wird zusammengeführt.
|
absenceCodeMap |
welches alte Absenzkürzel (z. B. F = Ferien) zu welcher neuen Absenzart gehört. Meist nichts ändern. |
ignoreFolders |
Ordner, die gar nicht übernommen werden (z. B. Kopien) |
Important
Der Vorschlag wird bei der ersten Übernahme geschrieben, aber noch nicht angewendet (confirmed: false). Willst du Ordner zusammenführen: mapping.json prüfen, bei den richtigen Einträgen false durch true ersetzen, speichern und dann die Übernahme wiederholen.
- Alle alten Stempel, Absenzen, Rapporte und PDF-Monatsrapporte sind nach der Übernahme in SmallTime 2027 sichtbar.
- Jeder Monat, für den die alte Version Werte gespeichert hatte, wird als abgeschlossener Monat mit genau diesen Werten abgelegt (Archiv).
- Monate vor dem Stichtag werden nicht neu berechnet. So bleiben die Salden, die deine Mitarbeitenden kennen.
- Die PDF-Dateien liegen danach in
data/documents.
Oft machst du die Übernahme vor dem Stichtag, um alles in Ruhe zu prüfen. Dann steht der endgültige Saldo der alten Version noch nicht fest, weil dort bis zum Stichtag weiter gestempelt wird.
In diesem Fall:
- setzt SmallTime den Eröffnungssaldo (Stunden und Ferientage) jeder Person am Stichtag auf 0,
- schreibt die Werte der alten Version vom Tag der Übernahme in die Bemerkung dieses Eröffnungssaldos, zum Beispiel: «Saldovortrag auf 0 gesetzt (Stichtag in der Zukunft). SmallTime PHP am 2026-12-15: 12.5 Std. / 8 Ferientage – am Stichtag prüfen.»
- und meldet das im Bericht.
Am Stichtag musst du deshalb:
- In SmallTime PHP für jede Person den Zeitsaldo und die Ferientage ablesen.
- In SmallTime 2027 unter Administration → Personen → (Person) → Eröffnungssaldi den Eintrag am Stichtag mit diesen Werten korrigieren.
Tip
Alternativ machst du die endgültige Übernahme erst am Stichtag (Datenbank neu, siehe unten). Dann übernimmt SmallTime die Salden direkt, und auch die Stempel der letzten Tage vor dem Stichtag sind im Archiv. Stempel, die nach deiner Übernahme noch in SmallTime PHP gemacht werden, kommen nämlich nicht automatisch nach.
- Bericht lesen: Gibt es Fehler oder viele Warnungen?
- Anmelden mit dem alten Admin-Login und neues Passwort setzen.
- Administration → Personen: Sind alle Personen da? Stimmen Name und Login?
- Bei 2–3 Personen die Arbeitsmodelle (Pensum, Wochenstunden, Ferienanspruch) mit der alten Version vergleichen.
- Eröffnungssaldi am Stichtag prüfen (siehe oben).
- Gruppen und Admins: Stimmen die Mitgliedschaften?
- Einen alten Monat öffnen: Sind die Stempel und Absenzen sichtbar?
- Einstellungen: Firmenname, Zeitzone, Feiertagskalender, siehe Einstellungen.
- Lizenz eintragen, siehe Lizenz.
Eine Datenbank mit Daten wird nie automatisch überschrieben. Um die Übernahme neu zu machen, beginnst du mit einer frischen Datenbank:
Caution
Dabei geht alles verloren, was in SmallTime 2027 seit der letzten Übernahme erfasst wurde (Stempel, Änderungen, neue Personen, Einstellungen). Mach das nur vor dem richtigen Start oder direkt am Stichtag.
- SmallTime beenden (Ctrl + C im Konsolenfenster).
- Zur Sicherheit den Ordner
datakopieren, z. B. nachdata-alt. - Im Ordner
datadiese Dateien löschen:app.sqlite,app.sqlite-walundapp.sqlite-shm(die letzten zwei gibt es nicht immer). - Den Ordner
data/documentslöschen (die PDFs werden neu kopiert). -
convert/Dataundconvert/include/Settingsbei Bedarf mit einer neuen Kopie aus SmallTime PHP ersetzen,convert.jsonundmapping.jsonanpassen. - SmallTime mit
npm startstarten. Die Übernahme läuft wieder automatisch. - Bericht lesen.
Note
Die Ordner data/backups und data/custom.css kannst du behalten.
Weiter mit: Lizenz · Backup und Update · Erste Schritte für Admins
SmallTime 2027 · Version 1.0 · Zur Startseite · Fragen? Zuerst in den häufigen Fragen für Anwender oder Admins nachsehen.
👤 Anwender
🧑💼 Admins
- Erste Schritte
- Personen
- Arbeitsmodelle
- Ferien und Absenzen
- Saldo und Auszahlungen
- Monatsabschluss
- Gruppen und Rechte
- Stammdaten
- Einstellungen
- Terminals und Badges
- Protokoll und Sicherheit
- Häufige Fragen
🛠️ Einrichten
💻 Informatik (nur Fachleute)