diff --git a/docs/matrix42-26-1-extension-migration.md b/docs/matrix42-26-1-extension-migration.md
new file mode 100644
index 0000000..a3920e5
--- /dev/null
+++ b/docs/matrix42-26-1-extension-migration.md
@@ -0,0 +1,263 @@
+# Matrix42 26.1 Extension/Webservice Migration
+
+Diese Notizen dokumentieren die Learnings aus der Migration der alten F4SD Matrix42 Extension inklusive Custom Web Service auf die Matrix42 26.1 Sandboxed Extension Struktur.
+
+Ausgangspunkt der eigentlichen 26.1-Migration war Commit `6c6ac272cd43` (`feat: support Matrix42 26.1 sandboxed web api`, 2026-06-26 11:44 +0200). Die Punkte hier sind bewusst als Checkliste fuer weitere Extensions formuliert.
+
+## Zielbild
+
+- Extension als .NET 8 Library mit `Matrix42.WebApi.Contracts`.
+- Webservice-Controller von `Matrix42.WebApi.Contracts.ApiController` ableiten.
+- Controller ueber `Matrix42.Hosting.Contracts.IDependencyResolver` konstruieren.
+- Matrix42-Fachservices nicht direkt im Controller-Konstruktor injizieren.
+- Host-Konfig so klein wie moeglich halten.
+- Paketbau in den Visual-Studio-/MSBuild-Prozess integrieren.
+- Runtime zuerst mit minimalen Endpoints pruefen (`isAlive`, einfache Datenabfrage), dann erst komplexere Services aktivieren.
+
+## Projektstruktur und Paketbau
+
+Bewaehrte Projekt-Eigenschaften:
+
+```xml
+net8.0
+Library
+win-x64;linux-x64
+true
+false
+...
+C4ITF4SD*.*
+...
+true
+```
+
+Das Package wird ueber `M42SandboxedExtension.targets` gebaut. Ein erfolgreicher Release-Build erzeugt:
+
+```text
+artifacts/ v/
+artifacts/ v.zip
+```
+
+Build-Befehl:
+
+```powershell
+dotnet build "C:\Workspace\C4IT FASD\F4SD_M42WebApi\C4IT - F4SD - M42WebApi.sln" -c Release
+```
+
+## Host-Konfig
+
+Die Host-Konfig muss exakt zum Assembly-Namen passen:
+
+```text
+C4ITF4SDM42WebApi.dll.host.config
+```
+
+Final bewaehrte Minimal-Konfig:
+
+```xml
+
+
+
+
+
+
+
+```
+
+Wichtig: Module nicht auf Vorrat laden. Jedes zusaetzliche Modul kann transitive Unity-Registrierungen erzwingen, die fuer den konkreten Webservice gar nicht benoetigt werden.
+
+Problematische Module in dieser Migration:
+
+- `Matrix42.Pandora.Persistence`
+- `Matrix42.Pandora.ServiceStore`
+- `Matrix42.Pandora.BizLogic`
+- `Matrix42.Pandora.Services`
+- `Matrix42.ServiceManager.BizLogic`
+- eigenes Webservice-Assembly als Host-Modul
+
+Diese Module fuehrten unter anderem zu Fehlern wie:
+
+```text
+IEntityDataService is an interface and cannot be constructed
+IUserProfileRepository is an interface and cannot be constructed
+IApiExplorer is an interface and cannot be constructed
+Could not load type 'System.Web.Routing.RouteTable'
+IComplianceRuleManager is an interface and cannot be constructed
+```
+
+## Controller-Konstruktion
+
+Nicht so:
+
+```csharp
+public MyController(IEntityDataService entityDataService, IJournalService journalService, IPandoraUserProfile userProfile)
+```
+
+Diese direkte Konstruktor-Injection zwingt Matrix42/Unity, alle Services schon beim Erzeugen des Controllers aufzuloesen. Dadurch kann bereits `isAlive` scheitern, obwohl der Endpoint selbst keinen dieser Services nutzt.
+
+Besser:
+
+```csharp
+private readonly IDependencyResolver _resolver;
+
+public MyController(IDependencyResolver resolver)
+{
+ _resolver = resolver ?? throw new ArgumentNullException(nameof(resolver));
+}
+
+private T GetRequiredService() where T : class
+{
+ var service = _resolver.TryGet();
+ if (service != null)
+ return service;
+
+ throw new InvalidOperationException($"Required Matrix42 service is not registered: {typeof(T).FullName}");
+}
+```
+
+Fachservices dann nur im jeweiligen Endpoint oder Helper lazy aufloesen.
+
+## WebAPI-Rueckgaben
+
+Matrix42 serialisiert manche Rueckgabetypen anders als klassische ASP.NET Web API.
+
+Bewaehrt:
+
+- Datenendpoints geben direkt Nutzdaten zurueck, z. B. `Task` oder `Task