Skip to content

feat(odata): migrate to PanoramicData.OData.Client#38

Open
Mikeoso wants to merge 5 commits intomainfrom
feature/odata/panoramicdata-migration
Open

feat(odata): migrate to PanoramicData.OData.Client#38
Mikeoso wants to merge 5 commits intomainfrom
feature/odata/panoramicdata-migration

Conversation

@Mikeoso
Copy link
Owner

@Mikeoso Mikeoso commented Mar 5, 2026

Summary

  • Replace Simple.OData.Client 6.0.1 (unmaintained, locks Microsoft.OData.Core < 8.0) with PanoramicData.OData.Client 10.0.55 (actively maintained, .NET 10 native, single dependency)
  • Introduce IODataClientAdapter wrapper over PanoramicData's concrete ODataClient for testability
  • Rewrite exception handling to use PanoramicData's typed exception hierarchy (ODataNotFoundException, ODataUnauthorizedException, ODataForbiddenException, ODataConcurrencyException)
  • Remove AppContext.SetSwitch("Switch.System.Xml.AllowDefaultResolver", true) security concern
  • Enable CentralPackageTransitivePinningEnabled and remove legacy transitive dependencies (Microsoft.OData.Core, Microsoft.OData.Edm)

Changed Files (13)

Area Files Change
Packages Directory.Packages.props, .csproj Package swap + transitive pinning
New abstractions IODataClientAdapter.cs, ODataClientAdapter.cs Testable wrapper over PanoramicData
Exception handling ODataExceptionHandler.cs Typed PanoramicData exceptions
Service layer ODataService.cs Adapter-based CRUD + batch
DI composition ApplicationDependencyInjection.cs ODataClientOptions + Polly update
Tests 3 test files Updated mocks + new exception tests
Docs panoramicdata-features.md Future feature catalogue

Test plan

  • All 303 tests pass (0 failures)
  • dotnet build succeeds across full solution
  • No Simple.OData.Client references remain in .cs, .csproj, or .props files
  • AppContext.SetSwitch removed
  • CentralPackageTransitivePinningEnabled = true set

🤖 Generated with Claude Code

Mikeoso and others added 5 commits February 18, 2026 17:02
IntegratoR Test Suite quest with enriched mission specs:
- testkit: shared test infrastructure (TestKit Foundation)
- abstractions: domain primitives and Result types (~51 tests)
- application: pipeline behaviours, CQRS handlers (~92 tests)
- odata: generic OData client and infrastructure (~59 tests)
- odata-fo: D365 F&O entity models and handlers (~56 tests)
- relion: RELion integration layer (~41 tests)

Total: ~299 tests across 48+ test classes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Mark application mission as completed in index. Update agent memory
with MediatR delegate signature, NSubstitute visibility, and
FluentValidation open-generic registration pitfalls.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…Client

Replace unmaintained Simple.OData.Client 6.0.1 with PanoramicData.OData.Client
10.0.55, an actively maintained successor targeting .NET 10 with minimal
dependencies.

Key changes:
- Introduce IODataClientAdapter wrapper for testability (PanoramicData's
  ODataClient is concrete with no interface)
- Rewrite ODataExceptionHandler to use PanoramicData's typed exception
  hierarchy (ODataNotFoundException, ODataUnauthorizedException, etc.)
- Rewrite ODataService method bodies to use adapter pattern
- Update DI registration: ODataClientOptions replaces ODataClientSettings
- Remove AppContext.SetSwitch("Switch.System.Xml.AllowDefaultResolver")
  security concern
- Enable CentralPackageTransitivePinningEnabled for dependency hygiene
- Remove Microsoft.OData.Core and Microsoft.OData.Edm transitive deps
- Update all 303 tests (0 failures)
- Document PanoramicData-specific features for future adoption

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings March 5, 2026 19:03
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants