Felice Principato
Senior NAV / Business Central Specialist
CV (anonymisiert) OnePager FAQ Migrationen Portfolio

FAQ Migrationen

Von Attain/Financials bis Business Central – mit voller Datenbank, Eigenentwicklungen und Zeitdruck.
Wenn du dich fragst, ob eure NAV-Version „zu alt“ ist: nein. Entscheidend ist nicht das Alter – sondern eine saubere Upgrade‑ und Migrationsstrategie.

Kurz gesagt: Ich mache alte NAV-Systeme upgrade-fähig, bevor die eigentliche Migration startet. Das senkt Risiken, reduziert Merges und macht C/AL→AL planbar – selbst bei tausenden Eigenobjekten.

Was ist das Ziel?

  • Business Central als stabile Zielplattform (On‑Prem oder SaaS – je nach Rahmenbedingungen).
  • Minimale Downtime durch Probeläufe, Cutover‑Plan und belastbare Checklisten.
  • Weniger Daten, weniger Risiko, weniger Aufwand – ohne die kaufmännische Nachvollziehbarkeit zu zerstören.
  • Customizing zukunftsfähig machen: weg von „Monolith‑C/AL“, hin zu Events/Extensions und klaren Schichten.

Der typische Fahrplan (praxisbewährt)

  1. Quick‑Assessment (1–2 Tage): Version, Datenvolumen, Objektlandschaft, Add‑ons, Integrationen, kritische Prozesse.
  2. Upgrade‑Pfad definieren: „Direkt“ vs. „Staged Upgrade“ (z. B. Attain → NAV2009 → NAV2018/BC14 → BC aktuell) – mit klaren Stop‑Points.
  3. Data‑Reduction: Datumskomprimierung, Archivierungsstrategie, gezielte Bereinigung (z. B. alte Log‑/Buffer‑Tabellen), damit der Move schneller & günstiger wird.
  4. Transformation des Customizings: Refactoring, Event‑Patterns, Trennung von Geschäftslogik/Integration/Reporting.
  5. Migrationsläufe: Microsoft‑Tools, RapidStart/Configuration Packages, oder SQL‑Skripte – je nachdem, was für eure Daten/Struktur sinnvoll ist.
  6. Tests & Cutover: Rehearsal‑Migrationen, Abnahme nach Prozess‑Checkliste, Go‑Live‑Begleitung.

Die wichtigsten Fragen – klar beantwortet

„Wir sind auf Financials oder Attain … geht das überhaupt?“

Ja. Genau da beginnt oft der größte Hebel. Ich bringe sehr alte Versionen zunächst in einen upgrade‑fähigen Zustand (Objekt‑Bereinigung, Daten‑/Code‑Konvertierungen, Zwischenversionen, kontrollierte Tests) – bis eine saubere Basis für Business Central steht.

„Unsere Datenbank ist riesig. Wird das nicht unbezahlbar?“

Große Datenbanken sind häufig nicht „wertvoll groß“, sondern „historisch groß“. Mit Datumskomprimierung (G/L, Debitor/Kreditor, Wertposten usw.), Archivierungslogik und gezielter Bereinigung lässt sich das Volumen oft massiv reduzieren. Ergebnis: kürzere Migrationsläufe, weniger Fehlerquellen, weniger Infrastruktur‑Kosten.

„Microsoft‑Migrationstools oder SQL‑Skripte – was ist besser?“

Es gibt kein Dogma – nur passende Werkzeuge. Standard‑Tools sind gut, wenn Strukturen „nah am Standard“ sind. Bei komplexen Historien, Spezialtabellen oder Performance‑Themen sind SQL‑Skripte oft schneller und kontrollierbarer. In der Praxis kombiniere ich beides: Standard wo möglich, SQL wo sinnvoll.

„Wir haben tausende Eigenobjekte. Wird das in AL nicht ein Albtraum?“

Es wird nur dann ein Albtraum, wenn man es ohne Plan angeht. Der Schlüssel ist Entkopplung: Logik aus alten Monolithen herauslösen, in Events/Subscriber auslagern, klare Schichten bilden – damit die C/AL→AL‑Transformation planbar wird. Ich nutze dabei Refactoring‑Strategien, die sich in der Realität bewährt haben (nicht nur „Best Practices“ auf Papier).

„Kann man moderne BC‑Funktionen/Events in ältere Versionen zurückbringen?“

Teilweise ja – in Form gezielter Backports oder „Downgrade‑Patterns“, damit ihr bereits vor der eigentlichen Migration Code in Events auslagern könnt. Das macht spätere Upgrades deutlich leichter, weil die Architektur schon vorher „BC‑kompatibler“ wird.

Praxisbeispiel (real, messbar): BC25‑Event nach NAV 2018 zurückbringen

Wenn du in einem Gespräch sofort sehen willst, ob jemand Migration wirklich kann, dann achte auf so etwas: In Business Central 25 existiert in Codeunit 80 ein Integration‑Event, das in NAV 2018 nicht existiert. Genau an solchen Stellen sitzt beim Kunden oft „Custom Code im Standard“ – und genau das macht Upgrades teuer.

Event (BC25): OnProcessPostingLinesOnBeforePostDropOrderShipment
Idee: Vor dem Posten einer Drop‑Shipment‑Logik einen stabilen Hook anbieten – damit Individualcode als Subscriber ausgelagert werden kann.

1) BC25: Publisher existiert

[IntegrationEvent(false, false)]
local procedure OnProcessPostingLinesOnBeforePostDropOrderShipment(
    SalesHeader: Record "Sales Header";
    TotalSalesLine: Record "Sales Line")
begin
end;

2) NAV 2018: Publisher nachziehen (Codeunit 80)

In NAV 2018 legst du in Codeunit 80 eine leere Function mit identischer Signatur an und aktivierst sie als Publisher.

LOCAL PROCEDURE OnProcessPostingLinesOnBeforePostDropOrderShipment@50000(
  SalesHeader@1000 : Record "Sales Header";
  TotalSalesLine@1001 : Record "Sales Line");
BEGIN
END;

Function‑Properties (C/SIDE):

  • EventPublisher = Yes
  • EventPublisherType = Integration (falls verfĂĽgbar)

3) Event an der richtigen Stelle auslösen

Der Aufruf kommt direkt vor der Stelle, an der „Drop Order Shipment“ gepostet wird (dort, wo früher oft kundenspezifischer Code stand):

// ... kurz bevor Drop Order Shipment gepostet wird:
OnProcessPostingLinesOnBeforePostDropOrderShipment(SalesHeader, TotalSalesLine);

// danach läuft Standard weiter (Post Drop Shipment / Shipment-Logik)

4) Custom Code raus aus dem Standard: Subscriber‑Codeunit

Jetzt legst du eine neue Kunden‑Codeunit (z. B. 50080) an und abonnierst das Event. Der ehemalige Standard‑Patch wandert vollständig in den Subscriber.

LOCAL PROCEDURE Handle_OnProcessPostingLinesOnBeforePostDropOrderShipment@50000(
  SalesHeader@1000 : Record "Sales Header";
  TotalSalesLine@1001 : Record "Sales Line");
BEGIN
  // >>> Hier liegt jetzt der kundenspezifische Code (ehemals in CU80) <<<
  // Validierungen, Logging, Zusatzlogik, Nebenbuchungen, etc.
END;

Function‑Properties (C/SIDE):

  • EventSubscriber = Yes
  • EventSubscriberObjectType = Codeunit
  • EventSubscriberObjectId = 80
  • EventSubscriberFunction = OnProcessPostingLinesOnBeforePostDropOrderShipment

Warum das so stark ist

  • Upgrades werden langweilig: weniger Merge‑Konflikte, weil Standard wieder Standard ist.
  • AL‑Transformation wird planbar: Event/Subscriber‑Struktur entspricht dem BC‑Prinzip – du nimmst sie „automatisch“ mit.
  • Du gewinnst Geschwindigkeit: weniger Analyse‑Zeit, weniger Reparatur‑Schleifen, sauberere Tests.

Genau solche Backports sind mein Alltag. Wenn du mir Version + DB‑Größe + grobe Objektanzahl gibst, kann ich sehr schnell sagen, welcher Upgrade‑Pfad für euch der schnellste und risikoärmste ist – inkl. messbarer Hebel durch Data‑Reduction und Refactoring.

„Wie schnell bekommen wir Klarheit?“

Sehr schnell. Nach dem Assessment kann ich dir sauber sagen:

  • welcher Upgrade‑Pfad realistisch ist,
  • wo die größten Risiken liegen,
  • wie ihr Zeit und Kosten ĂĽber Data‑Reduction und Refactoring spĂĽrbar senkt,
  • und wie wir die Migration in kontrollierbaren Etappen liefern.

Wenn du jetzt nur einen Schritt machst …

Schick mir eine kurze Nachricht (Version, Datenbankgröße, grobe Anzahl Eigenobjekte, Ziel: SaaS oder On‑Prem). Du bekommst keine Floskeln, sondern eine klare, belastbare Einschätzung: Upgrade‑Pfad, Risiken, Data‑Reduction‑Hebel und ein Vorgehen, das in der Praxis funktioniert.

Kontakt aufnehmen