Skip to content

Server Umstieg von SmallTime PHP

IT-Master Heizmann edited this page Sep 18, 2026 · 1 revision

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.

Inhalt

  1. So funktioniert die Übernahme
  2. Der Stichtag
  3. Schritt 1: Den Ordner convert anlegen und füllen
  4. Schritt 2: convert.json – deine Entscheide
  5. Schritt 3: Starten – die Übernahme läuft automatisch
  6. Schritt 4: Den Bericht lesen
  7. mapping.json – Personen zusammenführen
  8. Was mit den alten Monaten passiert
  9. Salden, wenn der Stichtag in der Zukunft liegt
  10. Was du danach prüfen solltest
  11. Die Übernahme wiederholen

So funktioniert die Übernahme

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

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.


Schritt 1: Den Ordner convert anlegen und füllen

  1. Lege im SmallTime-Ordner (dort, wo app.cjs liegt) einen neuen Ordner convert an, also zum Beispiel C:\SmallTime\convert.
  2. Öffne die alte SmallTime-PHP-Installation (auf dem alten Webserver oder per FTP).
  3. Kopiere den ganzen Ordner Data nach convert. Darin liegen users.txt, group.txt und ein Unterordner pro Person (auch die mit _del_ beginnenden gelöschten Personen).
  4. Kopiere den Ordner include/Settings so, dass er in convert/include/Settings liegt. Darin liegen settings.txt, pausen.txt, feiertage.txt und multilogin.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.


Schritt 2: convert.json – deine Entscheide

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.


Schritt 3: Starten – die Übernahme läuft automatisch

  1. Stelle sicher, dass es noch keine Datenbank gibt: Im SmallTime-Ordner darf es noch keinen Ordner data mit einer Datei app.sqlite geben. (Bei einer ganz neuen Installation ist das so.)
  2. Starte SmallTime wie gewohnt mit npm start (siehe Installation).
  3. Im Konsolenfenster erscheint starting automatic import und etwas später Import run 1 finished: … users, … stamps …. Je nach Datenmenge dauert das einige Sekunden bis wenige Minuten.
  4. 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.txt ist vorhanden.
  • In convert.json steht 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.


Schritt 4: Den Bericht lesen

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:

  1. eine Zusammenfassung: wie viele Personen, Gruppen, Stempel, Absenzen, Rapporte und Dokumente übernommen wurden
  2. ignorierte Ordner und Dateien mit Grund
  3. zusammengeführte Ordner (siehe mapping.json)
  4. Datenqualität: doppelte Stempel, übersprungene Stempel, offene Tage ohne «Gehen», mehrere Absenzen am gleichen Tag, unbekannte Absenzkürzel
  5. 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.


mapping.json – Personen zusammenführen

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.


Was mit den alten Monaten passiert

  • 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.

Salden, wenn der Stichtag in der Zukunft liegt

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:

  1. In SmallTime PHP für jede Person den Zeitsaldo und die Ferientage ablesen.
  2. 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.


Was du danach prüfen solltest

  1. Bericht lesen: Gibt es Fehler oder viele Warnungen?
  2. Anmelden mit dem alten Admin-Login und neues Passwort setzen.
  3. Administration → Personen: Sind alle Personen da? Stimmen Name und Login?
  4. Bei 2–3 Personen die Arbeitsmodelle (Pensum, Wochenstunden, Ferienanspruch) mit der alten Version vergleichen.
  5. Eröffnungssaldi am Stichtag prüfen (siehe oben).
  6. Gruppen und Admins: Stimmen die Mitgliedschaften?
  7. Einen alten Monat öffnen: Sind die Stempel und Absenzen sichtbar?
  8. Einstellungen: Firmenname, Zeitzone, Feiertagskalender, siehe Einstellungen.
  9. Lizenz eintragen, siehe Lizenz.

Die Übernahme wiederholen

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.

  1. SmallTime beenden (Ctrl + C im Konsolenfenster).
  2. Zur Sicherheit den Ordner data kopieren, z. B. nach data-alt.
  3. Im Ordner data diese Dateien löschen: app.sqlite, app.sqlite-wal und app.sqlite-shm (die letzten zwei gibt es nicht immer).
  4. Den Ordner data/documents löschen (die PDFs werden neu kopiert).
  5. convert/Data und convert/include/Settings bei Bedarf mit einer neuen Kopie aus SmallTime PHP ersetzen, convert.json und mapping.json anpassen.
  6. SmallTime mit npm start starten. Die Übernahme läuft wieder automatisch.
  7. 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

Clone this wiki locally