Skip to content

Major feature expansion and modernization, including new CRM type support, bug fixes, CI/CD migration, and documentation overhaul#21

Merged
imranakram merged 11 commits intomasterfrom
vNext
Mar 11, 2026
Merged

Major feature expansion and modernization, including new CRM type support, bug fixes, CI/CD migration, and documentation overhaul#21
imranakram merged 11 commits intomasterfrom
vNext

Conversation

@imranakram
Copy link
Copy Markdown
Owner

PR Classification

Major feature expansion and modernization, including new CRM type support, bug fixes, CI/CD migration, and documentation overhaul.

PR Summary

This PR modernizes the Xrm.Json.Serialization library with new converters, improved string handling, expanded test coverage, and updated infrastructure for Dynamics 365/CRM/Dataverse development.

  • Added AliasedValueConverter, OptionSetValueCollectionConverter, BooleanManagedPropertyConverter, and EntitySerializer helper in new and existing core files.
  • Refactored all namespaces and assembly metadata from Innofactor.Xrm.Json.Serialization to Xrm.Json.Serialization.
  • Fixed string escaping and removed unsafe code in BasicsConverter, with corresponding new and updated unit tests.
  • Migrated CI/CD from AppVeyor to GitHub Actions, adding build/test and NuGet publish workflows.
  • Rewrote and expanded README.md and added CHANGELOG.md, GITHUB-ACTIONS-SETUP.md, and UPGRADE-GUIDE.md for comprehensive documentation.

Project renamed to Xrm.Json.Serialization with updated namespaces, assembly info, and NuGet metadata. Upgraded target framework to .NET 4.8 and refreshed all NuGet dependencies, including Microsoft.CrmSdk.CoreAssemblies, Newtonsoft.Json, and xUnit. README and nuspec improved for clarity and accuracy. No changes to serialization logic or test functionality.
Major breaking changes: namespace changed to Xrm.Json.Serialization, removed Innofactor branding, updated assembly metadata, and moved projects to root. Upgraded to .NET 4.8, updated Newtonsoft.Json, xUnit, and System.Text.Json. Added changelog, upgrade guide, and restructure script. No changes to serialization logic; all tests and converters updated for new structure.
- Updated solution and project files to use "Xrm.Json.Serialization" naming and removed legacy "Innofactor" references.
- Added Xrm.Json.Serialization.nuspec and icon.png for NuGet packaging.
- Updated .csproj files: set processorArchitecture=MSIL, removed redundant <Private> tags, added missing .NET references, and improved NuGet error messages.
- Upgraded xunit.analyzers to v1.27.0 and included fixes analyzer.
- Removed obsolete fix-structure.ps1 script.
- Overall, improved maintainability and aligned with modern .NET/NuGet practices.
Significantly enhance README with badges, feature list, supported types table, detailed usage examples, and new sections for format, requirements, use cases, contributing, and changelog. Add NuGet tags and initial release notes to nuspec for improved discoverability.
Refactored BasicsConverter to use JsonWriter.WriteValue for string
serialization, removing custom CodeDomProvider logic. Added and
corrected unit tests to verify proper escaping of quotes,
backslashes, newlines, and tabs in serialized strings.
- Add AliasedValueConverter for FetchXML linked entity support
- Add OptionSetValueCollection and BooleanManagedProperty converters
- Add EntitySerializer helper for easy serialization/deserialization
- Change target framework to .NET 4.6.2 for plugin compatibility
- Update XrmContractResolver to register new converters
- Expand README with plugin usage, deployment, and new formats
- Update NuGet packaging and dependencies for net462
- Add 27 new unit tests for new converters and scenarios
- Fix string escaping issues in serialization
- Switched from AppVeyor to GitHub Actions for CI/CD, with build, test, and NuGet publish workflows
- Adopted CalVer versioning (1.2026.3.0) and updated .nuspec, README, and CHANGELOG
- Added AliasedValue, OptionSetValueCollection, BooleanManagedProperty converters, and EntitySerializer helper
- Fixed string escaping bug (#20) and reverted target framework to .NET 4.6.2
- Improved documentation, added usage examples, and updated solution structure and metadata
Updated the changelog to adopt Calendar Versioning (CalVer) with the format Major.Year.Month.Patch, replacing previous Semantic Versioning references. Added a section explaining CalVer with examples. Updated version entries and the version comparison table to use the new scheme, and clarified the 2026-03-11 release notes to mention bug #20.
Updated build-and-test.yml and publish-nuget.yml to use a PowerShell script that locates vstest.console.exe for VS2022 or VS2019, and falls back to the xunit console runner if neither is found. This enhances CI reliability by ensuring tests run regardless of available test runners.
Added the xunit.runner.console package (version 2.9.3) to packages.config as a development dependency for .NET Framework 4.6.2. This enables running xUnit tests via the command line.
@imranakram imranakram merged commit 8eb4f79 into master Mar 11, 2026
1 of 2 checks passed
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.

1 participant