SDM Compliance Report — Example-Event-Management-Backend
Generated by sdm-compliance-check.agent.md (v2 — storage flexibility update)
Branch scanned: completed
Detected storage path: Auto-generated DOM
Models use [SdmDomStorage] + Skyline.DataMiner.SDM (bundled CodeGenerator). Generated mapper EventDomMapper.g.cs confirmed present.
sdm / tier-1-foundational
| # |
Check |
Status |
Notes |
| T1-1 |
Skyline.DataMiner.SDM or SDM.Abstractions referenced |
✅ Compliant |
Skyline.DataMiner.SDM v1.0.1 in EventManagement.Backend.csproj; Skyline.DataMiner.SDM.SourceGenerator.Runtime v1.0.1 in EventManagement.Installer.csproj |
| T1-2 |
Data models inherit from SdmObject<T> |
✅ Compliant |
Event : SdmObject<Event> in EventManagement.Backend/Models/Event.cs |
| T1-3 |
Each model has storage binding |
✅ Compliant |
Event carries [SdmDomStorage("exampleventmgmt")]; generated EventDomMapper.g.cs confirms code generator ran |
| T1-4 |
[GenerateExposers] on all [SdmDomStorage] models |
✅ Compliant |
Present on Event |
| T1-5 |
Auto-generated storage mappers present |
✅ Compliant |
EventManagement.Shared/Maps/EventDomMapper.g.cs — generated by Skyline.DataMiner.SDM.CodeGenerator |
| T1-6 |
Custom repository completeness |
N/A |
No custom repositories — solution uses auto-generated DOM path only |
Result: ✅ 0 errors · 0 warnings · 1 N/A
sdm / tier-2-encapsulated
| # |
Check |
Status |
Notes |
| T2-1 |
API helper interface exists |
✅ Compliant |
IEventApiHelper exposes IBulkRepository<Event> Events |
| T2-2 |
API helper class implements interface + IConnection |
✅ Compliant |
EventApiHelper(IConnection) initialises Events = new EventDomRepository(connection) |
| T2-3 |
Backend structurally separate from installer/scripts |
✅ Compliant |
EventManagement.Backend.csproj is a Microsoft.NET.Sdk library; installer is a separate Skyline.DataMiner.Sdk package project |
| T2-4 |
Storage initialisation script exists |
✅ Compliant |
EventManagement.Installer: DomInstaller.InstallDefaultContent() sets up DOM module + section definitions. Installer also validates SDM is pre-installed as a prerequisite (best-practice ✅) |
| T2-5 |
Unit tests using repository mock infrastructure |
✅ Compliant |
RepositoryTests uses DomConnectionMock + DomSLNetMessageHandler from Skyline.DataMiner.Utils.DOM |
Result: ✅ 0 errors · 0 warnings
sdm / tier-3-federated
| # |
Check |
Status |
Notes |
| T3-1 |
Backend project packaged as NuGet |
✅ Compliant |
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>, <PackageVersion>1.0.1</PackageVersion> |
| T3-2 |
Package ID follows Skyline.DataMiner.* convention |
✅ Compliant |
AssemblyName = Skyline.DataMiner.Learning.EventManagement |
| T3-3 |
SDM Solution Registration referenced and used |
⚠️ Non-compliant [WARNING] |
No reference to SLC-SDM-Registration in any .csproj and no SdmRegistrar usage found. Other solutions cannot discover this solution through the federated SDM mesh. |
| T3-4 |
User-Defined API (UDAPI) exposes models |
N/A |
No [OnApiTrigger] or SDM.UserDefinedApi found — acceptable for a learning/example repo |
| T3-5 |
GQI ad-hoc data source exposes models |
N/A |
No GQI project found — acceptable for a learning/example repo |
| T3-6 |
LINQ support enabled (IQueryableRepository<T>) |
N/A |
Not implemented — consumers use FilterElement<T> directly via IBulkRepository<Event> |
Result: ⚠️ 0 errors · 1 warning · 3 N/A
SDM Compliance Summary
Detected storage path: Auto-generated DOM
| Tier |
Status |
Errors |
Warnings |
| Tier 1 — Foundational |
✅ Compliant |
0 |
0 |
| Tier 2 — Encapsulated |
✅ Compliant |
0 |
0 |
| Tier 3 — Federated |
⚠️ Partial |
0 |
1 |
Highest fully compliant tier: Tier 2
SDM Models detected
| Model class |
Storage type |
[GenerateExposers] |
Repository interface |
Mapper / impl |
Event |
DOM auto-gen ("exampleventmgmt") |
✅ |
IBulkRepository<Event> (generated) |
✅ EventDomMapper.g.cs |
Priority Actions
- [T3-3 WARNING] Add
SLC-SDM-Registration as a package reference and call SdmRegistrar.RegisterSolution(...) + SdmRegistrar.RegisterModels(...) during installation. This registers the solution with the federated SDM mesh, enabling cross-solution discovery and ObjectLinking. Without it, other DataMiner solutions cannot detect that EventManagement is installed.
SDM Compliance Report —
Example-Event-Management-BackendDetected storage path: Auto-generated DOM
Models use
[SdmDomStorage]+Skyline.DataMiner.SDM(bundled CodeGenerator). Generated mapperEventDomMapper.g.csconfirmed present.sdm / tier-1-foundational
Skyline.DataMiner.SDMorSDM.AbstractionsreferencedSkyline.DataMiner.SDMv1.0.1 inEventManagement.Backend.csproj;Skyline.DataMiner.SDM.SourceGenerator.Runtimev1.0.1 inEventManagement.Installer.csprojSdmObject<T>Event : SdmObject<Event>inEventManagement.Backend/Models/Event.csEventcarries[SdmDomStorage("exampleventmgmt")]; generatedEventDomMapper.g.csconfirms code generator ran[GenerateExposers]on all[SdmDomStorage]modelsEventEventManagement.Shared/Maps/EventDomMapper.g.cs— generated bySkyline.DataMiner.SDM.CodeGeneratorResult: ✅ 0 errors · 0 warnings · 1 N/A
sdm / tier-2-encapsulated
IEventApiHelperexposesIBulkRepository<Event> EventsIConnectionEventApiHelper(IConnection)initialisesEvents = new EventDomRepository(connection)EventManagement.Backend.csprojis aMicrosoft.NET.Sdklibrary; installer is a separateSkyline.DataMiner.Sdkpackage projectEventManagement.Installer:DomInstaller.InstallDefaultContent()sets up DOM module + section definitions. Installer also validates SDM is pre-installed as a prerequisite (best-practice ✅)RepositoryTestsusesDomConnectionMock+DomSLNetMessageHandlerfromSkyline.DataMiner.Utils.DOMResult: ✅ 0 errors · 0 warnings
sdm / tier-3-federated
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>,<PackageVersion>1.0.1</PackageVersion>Skyline.DataMiner.*conventionAssemblyName=Skyline.DataMiner.Learning.EventManagementSLC-SDM-Registrationin any.csprojand noSdmRegistrarusage found. Other solutions cannot discover this solution through the federated SDM mesh.[OnApiTrigger]orSDM.UserDefinedApifound — acceptable for a learning/example repoIQueryableRepository<T>)FilterElement<T>directly viaIBulkRepository<Event>Result:⚠️ 0 errors · 1 warning · 3 N/A
SDM Compliance Summary
Detected storage path: Auto-generated DOM
Highest fully compliant tier: Tier 2
SDM Models detected
[GenerateExposers]Event"exampleventmgmt")IBulkRepository<Event>(generated)EventDomMapper.g.csPriority Actions
SLC-SDM-Registrationas a package reference and callSdmRegistrar.RegisterSolution(...)+SdmRegistrar.RegisterModels(...)during installation. This registers the solution with the federated SDM mesh, enabling cross-solution discovery and ObjectLinking. Without it, other DataMiner solutions cannot detect thatEventManagementis installed.