microsoft/fhir-server release/4.0.759
microsoft/fhir-server
Captured source
source ↗published May 11, 2026seen Jun 26captured 2dhttp 200method plain
4.0.759
Repository: microsoft/fhir-server
Tag: release/4.0.759
Published: 2026-05-11T01:10:28Z
Prerelease: no
Release notes:
What's Changed
Azure Health Data Services (SQL)
- Fix NSP Association (S360 item) by @v-rachitsh in #5534
- Fix startup memory pressure by @LTA-Thinking in #5550 — Resolves OOM-style memory spikes at startup on databases with very large numbers of systems or quantity codes by streaming/processing rows inside the reader and skipping nulls instead of materializing huge lists.
- Disable query plan reuse based on stats by @LTA-Thinking in #5525 — Bad cached plans on skewed search parameters were causing wildly inconsistent query performance; a new background
QueryPlanReuseCheckernow detects skewed parameters from SQL stats and disables plan reuse for them, with the toggle moved to appsettings for easier control. - Restrict Import to Configured Storage Account by @mikaelweave in #5536 — Fixes a security gap where
$importaccepted URLs pointing at arbitrary storage accounts; input URLs are now validated against the configured storage account endpoint and failure responses are sanitized. - Add logs to detect meta-only update operations by @rbans96 in #5551 — Adds telemetry to identify update calls that result in no changes or only changes to
metafields (tag, security, profile, lastUpdated, versionId), making it easier to spot wasteful client write patterns. - Reduce memory pressure during export by releasing RawResource by @apurvabhaleMS in #5552 — Large export batches were holding decompressed
RawResourcepayloads in memory until the entire batch finished, causing OOMs on memory-constrained App Services;RawResourceis now nulled out after each write, the O(n²) drain loop is replaced with an O(n) loop, and_maxCountis capped at 10,000.
Common to both Azure API for FHIR and Azure Health Data Services
- Update tests for search parameter initialization by @feordin in #5516 — Adds negative E2E and integration test coverage around search parameter initialization to lock in expected behavior and catch regressions earlier.
- Add PATCH E2E test coverage aligned with PUT tests by @rbans96 in #5554 — Expands E2E coverage so PATCH (JSON Patch and FHIRPath Patch) is validated against the same scenarios as PUT, including single-field updates that confirm other fields and resource identity remain unchanged.
- Add OOM protection for Export operations by @apurvabhaleMS in #5511 — Improved retry handling for $export Out of Memory exceptions— Export jobs previously failed immediately on
OutOfMemoryException; the job now retries with reduced batch size. When retries are exhausted, the job fails with the same 413 RequestEntityTooLarge status and ExportOutOfMemoryException message as before. - [Metrics] Adding support to Success rate metrics by @fhibf in #5555 — Adds success/failure rate metric emission across bundles, import, jobs, and the search parameter cache refresh background service so operators can monitor reliability of these operations.
Other Changes
- Prepare for concurrency based on max last updated by @SergeyGaluzo in #5527 — Lays groundwork for future max(LastUpdated)-based concurrency by deduplicating
MergeSearchParams/MergeResourcesAndSearchParams, guarding against racing reindex updates inside the SQL transaction, fixingGetActiveJobsaccess, and adding an efficient active-job existence check. - Fix test files for missing interface member by @feordin in #5548 — Updates test files to implement a newly-added interface member that was breaking the build.
Full Changelog: https://github.com/microsoft/fhir-server/compare/release/4.0.747...release/4.0.759