# Disco AD Compare Plugin — Project Overview ## Purpose A Disco ICT plugin that compares the Active Directory `managedBy` attribute on computer objects against the Disco `AssignedUserId`, reporting mismatches. Also provides AD details (last login, account status) on device and user pages via UIExtension features. ## Architecture - **C# .NET Framework 4.5** class library compiled with .NET Framework MSBuild v4.0 - **C# 5 syntax only** — no modern C# features (server has no VS/Roslyn) - **Plugin system**: extends `Plugin`, `PluginWebHandler`, `PluginConfigurationHandler`, `UIExtensionFeature` - **Build toolchain**: PowerShell script (`Build-Plugin.ps1`) that resolves assembly refs from Disco install bin, compiles, generates manifest, packages as `.discoPlugin` (zip renamed) - **No external dependencies** — all refs come from Disco's own `WebApp\bin` ## Key Components | Component | Purpose | |---|---| | `DeviceCompareService` | DN-to-DN comparison engine, filters invalid devices | | `ADCompareWebHandler` | Server-side rendered dashboard + CSV export | | `DeviceUIExtension` | Device page panel (managedBy match, last login) | | `UserUIExtension` | User page panel (last login, AD status, OU) | | `ADCompareConfigurationHandler` | Required config handler with WebViewPage | ## Current State - **Working**: Comparison dashboard, CSV export, DN comparison logic, build pipeline - **Not working**: UIExtension panels on device/user pages (features initialize without errors but HTML doesn't render — needs investigation) ## Session Log - 2026-04-28 — Initial build and iteration — Built plugin from scratch, resolved C#5/MSBuild constraints, fixed DN comparison, got dashboard working, UIExtension rendering still unresolved