HAPI FHIR or Microsoft FHIR Server: which fits your FHIR platform decision
If you are a CISO or platform lead choosing a self-hosted FHIR server for a regulated workload, the deciding question is where the workload will run and which FHIR versions you must serve. HAPI FHIR fits teams that need multiple FHIR versions, run outside Azure, and are willing to build their own identity layer. Microsoft's FHIR Server project, which is MIT-licensed and backs Azure's managed FHIR offerings, fits teams whose platform is already Azure-hosted and who want an SQL provider path with Azure Active Directory role mapping. HAPI FHIR's JPA server covers DSTU2, DSTU3, R4, R4B and R5, and it can be deployed as a Docker image, on Tomcat, Jetty or Wildfly, or on Kubernetes with a Helm chart. The starter supports PostgreSQL and Microsoft SQL Server for production and does not support MySQL. HAPI states it does not provide one security layer, so you will assemble the AuthorizationInterceptor, consent interceptors and BALP audit logging yourself. Microsoft's project documents FHIR R4 as supported, notes that FHIR R4B support ended on 1 July 2026, and says Cosmos DB provider support ended on 30 September 2026, leaving the SQL Database provider. Confirm the version and provider status against the current release notes before you commit. The decision turns on four things: your cloud footprint, the FHIR versions your partners require, your identity model, and whether your team is stronger in Java or .NET. Test a short list of those answers against a proof of concept in your own environment, and confirm the support position for each project in writing before scoping the build.
Which scenario points to which server
Each row names a common situation, the server that usually fits better, and the condition that makes that choice hold. Read the condition column first, because a scenario flips when that condition changes. Most teams will find that one or two rows describe them closely.
| Scenario | Better fit | Condition that drives the choice |
|---|---|---|
| Azure-only hosting with a managed service preferred | Microsoft FHIR Server | Your team wants the Azure FHIR service or Azure Health Data Services to run the infrastructure, and you accept Azure as the operating boundary. |
| On-premises or multi-cloud deployment | HAPI FHIR | You must run in your own data center, air-gapped network or more than one cloud. The HAPI JPA starter can run as a Docker image, on Tomcat, Jetty or Wildfly, or on Kubernetes with a Helm chart. |
| FHIR R4B or DSTU2 and DSTU3 legacy exchange | HAPI FHIR | HAPI's JPA server documentation lists DSTU2, DSTU3, R4, R4B and R5. Microsoft's README says R4 remains supported and R4B support ended on 1 July 2026, so confirm any R4B or older version need with Microsoft before committing. |
| PostgreSQL shop | HAPI FHIR | The JPA starter supports PostgreSQL for production, so the existing database skills and operations tooling carry over. Confirm your PostgreSQL version and HA design against the current HAPI documentation. |
| SQL Server shop | Either, depending on the cloud | HAPI FHIR also supports Microsoft SQL Server for production. If the SQL Server estate is on Azure, the Microsoft SQL Database provider is still supported, so the choice comes down to hosting, as in the Azure-only row. |
| Team already running Cosmos DB | Microsoft FHIR Server, with a migration plan | Microsoft's README says Cosmos DB provider support ended on 30 September 2026. Existing Cosmos DB deployments need a move to the SQL Database provider, so this is a migration project, not a reason to stay. |
| FHIR facade over a legacy system | HAPI FHIR (plain server model) | A plain server that you write resource providers against suits a facade over your own data store. Illustrative: a hospital maps an HL7 v2 feed into FHIR resources without moving the source system. Confirm the mapping effort with a pilot. |
| Need for HAPI's terminology, MDM and partitioning features | HAPI FHIR (JPA server) | HAPI documents terminology services, validation, MDM and partitioning. Confirm each feature you need against the version you plan to deploy, since these are not a checklist item for Microsoft's server. |
| Need for a commercial support contract | Confirm with both vendors | HAPI's README points to Smile CDR for commercial support. Microsoft support depends on your Azure agreement. Ask each for written support terms before you choose. |
How each server is built and what that means for operations
HAPI FHIR and Microsoft's FHIR Server reach a running FHIR endpoint by different routes: one is a Java server you deploy and tune yourself, the other is a persistence-layered project that Azure packages as a managed service. The cards below set out where those routes diverge for patching, scaling and database ownership.
Deployment packaging for HAPI JPA
The HAPI JPA server starter can run as the hapiproject/hapi Docker image, under Docker Compose, under Spring Boot, as a WAR on Tomcat, Jetty or Wildfly, or on Kubernetes through a Helm chart. Each route makes your team responsible for the application container, its JVM settings and its upgrade path. Check which packaging your platform team already operates before you pick a route, because the upgrade process differs for each.
Database defaults and production choices
The HAPI starter defaults to an embedded H2 database, which suits evaluation rather than production. For production you choose PostgreSQL or Microsoft SQL Server, and MySQL is not supported. Your team then owns schema-level operations, backups and capacity for that database. Confirm which database engine your DBA group supports before you commit to HAPI.
Microsoft's pluggable persistence layer
The microsoft/fhir-server project separates its persistence layer from the FHIR API, and the SQL Database provider remains supported. The Cosmos DB provider's support ended on 30 September 2026, so any plan built on that store needs a migration path. Ask Microsoft or your Azure account team how the SQL provider is versioned and supported for a self-managed deployment before you rely on it.
Azure portal, CLI and ARM provisioning
The Microsoft project links quickstarts for the Azure portal, CLI and PowerShell, and provides scripts and ARM templates for provisioning in the Microsoft Cloud. Provisioning becomes repeatable and code-driven, but the resulting environment is Azure-specific. Confirm which of these templates you can version in your own repository and whether your change process accepts them.
Who patches and who scales
With HAPI, your team patches the Java runtime, the HAPI version, the servlet container and the database, and scales the application tier by running more instances. With Microsoft's Azure-hosted service, Microsoft operates the platform layer and you configure its scaling options. If you self-host the Microsoft project outside Azure, the patching and scaling burden moves back to you, so ask who carries that work before deciding.
Security building blocks you assemble
HAPI states it does not provide one security layer for every deployment. It offers building blocks such as authentication interceptors, the AuthorizationInterceptor, consent and search narrowing interceptors, CORS support and BALP audit logging, which you wire together. Microsoft's project instead maps roles to Azure Active Directory through supplied scripts. Map your access model to each approach and confirm who will maintain those interceptors or scripts after go-live.
How FHIR versions and the Cosmos DB retirement affect the choice
Start with the FHIR versions your partners and internal consumers actually send and expect, because that decides whether a server's version coverage is a constraint. HAPI FHIR's JPA server covers DSTU2, DSTU3, R4, R4B and R5, so one deployment can serve clients on different versions, provided each version path is tested against your own data. The microsoft/fhir-server project states that R4 remains supported and R4B support ended on 1 July 2026. Any interface that still depends on R4B must move to R4 or to another server before you rely on the Microsoft project. Teams that need DSTU2 or DSTU3 endpoints should verify directly with Microsoft that the project meets them before assuming parity.
The persistence decision is more time sensitive. The microsoft/fhir-server README says Cosmos DB provider support ended on 30 September 2026, while the SQL Database provider remains supported. If your current Azure environment uses the Cosmos DB provider, moving to the SQL Database provider is a migration project, not a configuration change. Confirm the supported migration steps and tooling with Microsoft in writing. Then rehearse a restore and validation on a copy of production data, check search parameters and indexes after the move, and agree a cutover window with clinical and integration owners before you commit a date.
HAPI's JPA model is not tied to one database technology. The hapi-fhir-jpaserver-starter defaults to an embedded H2 database, supports PostgreSQL and Microsoft SQL Server for production, and does not support MySQL. A team that standardizes on MySQL must choose another engine or confirm support with HAPI's maintainers. Microsoft's project uses a pluggable persistence layer, and the SQL Database provider is the supported store going forward, which ties that path to Azure data services if you run in Azure. If your organization already operates PostgreSQL or SQL Server well, that skill set may settle the store question, but confirm schema, search and backup behavior for your chosen store with each vendor and record the answer in the design document.
Capabilities, licensing and support side by side
This table compares licensing, FHIR versions, data stores, identity, deployment, and release and support routes for HAPI FHIR and the Microsoft FHIR Server. Read each row against your own requirements, and treat any cell that says to confirm as an open question for the vendor or project. The main takeaway is that HAPI FHIR offers a broader multi-version server you run anywhere, while the Microsoft project is tied closely to Azure deployment patterns.
| Capability | HAPI FHIR | Microsoft FHIR Server |
|---|---|---|
| License | Apache Software License 2.0. Have your legal team review the terms for your distribution model. | MIT license. The Azure managed FHIR service built on this project is billed separately by Microsoft. |
| FHIR versions | DSTU2, DSTU3, R4, R4B and R5 are covered in the JPA server documentation. | R4 remains supported. R4B support ended 1 July 2026. Confirm R5 status with the project. |
| Database options | Embedded H2 by default. PostgreSQL and Microsoft SQL Server for production. MySQL is not supported in the starter. | SQL Database provider remains supported. Cosmos DB provider support ended 30 September 2026. Pluggable persistence layer. |
| Partitioning and MDM | Partitions support multitenancy, separate data sources or regional grouping. MDM is documented. Confirm fit for your model. | Not covered in the supplied material. Confirm multitenancy and MDM options with the project before planning. |
| Terminology and validation | Terminology services and validation are documented in the JPA server guide. Confirm the version you deploy. | Confirm terminology and validation features in the repository documentation for your release. |
| Bulk Export and $convert-data | Confirm Bulk Export and $convert-data coverage in the documentation for your chosen version. | Bulk Export and $convert-data are documented in the project README. Test them against your data volumes. |
| Identity integration | No single security layer. Building blocks include AuthorizationInterceptor, consent interceptors, CORS and BALP audit logging. You design the access model. | Provided scripts map to Azure Active Directory for role-based access control. Confirm the mapping for non-Azure identity providers. |
| Deployment outside Azure | Docker image, Docker Compose, Spring Boot, WAR on Tomcat, Jetty or Wildfly, or Kubernetes with a Helm chart. | Quickstarts and ARM templates target Azure. Confirm the self-hosted path and its dependencies with the project. |
| Release reference and commercial support | v8.8.2 released 25 September 2026. Version 8.2.0 requires JDK 17. Commercial support is offered through Smile CDR. | Latest release is release/5.2.6, published 18 October 2026. Confirm support terms for self-hosted use with Microsoft. |
What each project licenses and where paid support comes from
HAPI FHIR is a Java API for HL7 FHIR clients and servers, licensed under the Apache Software License 2.0. That license covers the library and the JPA server code, so you can run, modify and embed it in your own platform without paying a license fee for the code itself. The project does not bundle a support contract with that code. Its README points to Smile CDR for commercial support, and a public demonstration server runs at hapi.fhir.org.
- Apache 2.0 code: The license covers the library and server code you deploy. Confirm with your legal team what obligations apply if you redistribute a modified build to partners or customers.
- Public demonstration server: hapi.fhir.org is useful for evaluating the API and its resource behavior. It is a shared public service, so do not send production or identifiable patient data to it.
- Commercial support route: The README names Smile CDR, the commercial product from the same organization, as the place to go for commercial support. Ask Smile CDR in writing which HAPI versions, database engines and FHIR versions its support covers.
- Operations stay with your team: Without a support agreement, you run the servers, databases, patching, upgrades and monitoring yourself. Any implementation partner is a separate contract with its own written scope.
Before you commit, confirm whether any support terms cover the exact starter, JPA configuration and Java version you plan to run, and get the answer in the contract.
The microsoft/fhir-server project is an MIT-licensed open-source implementation of HL7 FHIR. Microsoft states that its Azure PaaS FHIR servers, including the FHIR service in Azure Health Data Services, are backed by this project. The license is permissive, so the code itself carries no license fee. What you pay for in the managed case is the Azure service, billed through Azure rather than through the open-source repository.
- MIT license: You may use, modify and redistribute the code with the license notice retained. Confirm with counsel how this applies to any build you package for your own environment.
- Managed service billing: Charges for Azure Health Data Services are set by Azure and depend on the services and consumption you choose. No managed pricing is supplied in this comparison, so request the current Azure pricing for your region and workload in writing.
- Imaging in the same workspace: Microsoft describes Azure Health Data Services as able to host a FHIR server and a DICOM server in one workspace. This matters only if DICOM imaging is on your roadmap, and it adds its own billing lines.
- Self-deployment is your responsibility: The README provides quickstarts for the Azure portal, CLI and PowerShell, plus scripts and ARM templates for provisioning in Microsoft Cloud. Running the code outside Azure means you own packaging, hosting and support arrangements, so confirm with Microsoft whether any support covers self-deployed builds.
Ask Microsoft and your Azure account team which parts of the managed service carry Microsoft's support terms and which remain with your team.
No pricing for managed hosting or commercial support is supplied for either project in this comparison, so none is stated here. The two routes to paid help differ: HAPI FHIR points to Smile CDR, and the Microsoft FHIR Server runs inside Azure service agreements. Both code bases carry no license fee under their stated licenses, so the cost sits in hosting, people, support contracts and the work to adapt the platform to your environment.
- One-time work: Implementation, data migration, identity integration, security configuration and testing are usually one-time costs. Ask each provider or partner for a fixed-scope written proposal that lists deliverables and timelines before work starts.
- Recurring costs: Hosting, Azure consumption, database operations, support subscriptions and staff time for upgrades recur. Upgrade planning matters here: the microsoft/fhir-server README states that FHIR R4B support ended on 1 July 2026, so confirm which FHIR versions your chosen route still supports.
- Cost drivers: Data volume, the FHIR versions you must serve, high availability topology, number of environments and audit logging volume all push costs up or down. Name these inputs in your request so quotes are comparable.
- Quote request list: Ask each vendor for written prices, the support terms and response commitments, supported versions, release cadence, exit and data export terms, and the price basis for each environment.
Get every figure in writing with the version, region and support scope it covers, so you can compare the two routes on the same basis.
How identity and access control differ in practice
HAPI FHIR does not ship a single security layer. It offers building blocks: authentication interceptors, the AuthorizationInterceptor, consent and search narrowing interceptors, CORS support and BALP audit logging. Your team writes the policy that connects them. In practice that means deciding who may read or write each resource type, which compartments or patients a clinician can see, how consent directives narrow search results, and where audit events are stored and reviewed. The policy is your work product, and it needs its own design review and test cases before go-live.
Microsoft's project takes a different starting point. The microsoft/fhir-server README says it provides scripts to map the server to Azure Active Directory for role-based access control, and the Azure deployment paths are documented around that wiring. If your identity provider is Entra ID and your roles already map cleanly to FHIR access needs, much of the identity plumbing is prepared for you. Outside Azure, that mapping is not a drop-in. Confirm with Microsoft, through the project's issues or support channels, which identity providers and token configurations the project supports, and which parts of the Azure scripts you would need to replace.
Whichever server you choose, test the access model rather than trusting the configuration. Build a matrix of roles, patient contexts and resource types, then run positive and negative tests against each server in your own environment, including token expiry, revoked roles and cross-tenant reads if you run partitions. Record the results as evidence for your security review. Ask each vendor for their documented identity integration steps in writing, and treat any step they cannot document as a gap in your plan.
Moving from one server to the other
This sequence turns an inventory of resources and authorization rules into a tested cutover, so the target server holds the same FHIR data and behaves the same way for every client. Each step ends with a check you can confirm before the next one starts.
Inventory resource types and FHIR versions
Start by listing every resource type, profile and search parameter your clients use, and the FHIR version each interface speaks. Your integration team and the owners of each consuming application do this together, because only they know which fields and extensions matter. Confirm the target versions first: HAPI FHIR's JPA server covers DSTU2 through R5, while the microsoft/fhir-server README states that FHIR R4 remains supported and R4B support ended on 1 July 2026. The output is a signed-off list that shows any version gap before you move data.
Map the source and target data stores
Identify the store behind the source server. Microsoft's Cosmos DB provider support ended on 30 September 2026, so a Cosmos DB source needs a migration path that does not depend on that provider. On the HAPI side, the JPA starter supports PostgreSQL and Microsoft SQL Server for production and does not support MySQL. Your database administrators and platform engineers confirm which store the target will use and whether sizing and backup standards are met. The output is a written data store decision for each environment.
Export and transform the data
Use Bulk Export on the source server to produce NDJSON files for each resource type, and use the $convert-data operation or your own transformation scripts for any data that arrives in other formats. Your data engineers run the export in a non-production copy first, then map any profile differences or identifiers that the target must handle. Check record counts per resource type against the source and sample resources for field-level accuracy. The output is a reconciled extract with a documented list of transformations.
Load the target and rebuild authorization
Load the transformed data into the HAPI JPA server, then rebuild access control in HAPI's model. HAPI does not provide a single security layer, so your security engineers implement authentication, the AuthorizationInterceptor, consent or search narrowing where needed, and BALP audit logging. Map each Azure role assignment to a defined role or rule in the new system, and document the mapping. Test every role with real token claims. The output is an access matrix that security reviewers have signed off, with test results for each role.
Rebuild deployment pipelines
Azure provisioning through portal, CLI, PowerShell or ARM templates does not transfer. Your platform engineers rebuild deployment on the environment you control, using the hapiproject/hapi Docker image, Docker Compose, a WAR on a servlet container, or the Helm chart for Kubernetes. Configuration, secrets, backups and monitoring are rebuilt in the same pass. The output is a repeatable pipeline that deploys to staging and production from version-controlled configuration.
Validate conformance and compare reads
Run the target against your conformance and validation tests for each FHIR version in use, and fix any resource that fails. Then send the same read and search requests to both servers, in parallel, and compare the responses for content and paging behavior. Clients that depend on specific search results should be tested against this comparison. The output is a documented set of differences, each either fixed or accepted by the application owner.
Cut over and retain the source
Schedule the cutover after the parallel reads match on the agreed test set. Freeze writes on the source, run a final export and load for changes made since the earlier extract, then point clients at the new endpoint. Keep the source readable for a defined rollback window that your change board sets. The output is a cutover record showing the final counts, the time of switch and the rollback decision.
What implementing each server involves and where projects run long
Implementing HAPI FHIR is mostly a platform build, and the work is front-loaded. You size and provision the database first: the JPA starter defaults to an embedded H2 database, so a production deployment means choosing PostgreSQL or Microsoft SQL Server (MySQL is not supported) and planning storage, backups and index tuning for your expected resource volume. Next you decide on partitioning, since HAPI places each resource in a partition used for multitenancy, data source separation or regional grouping, and that choice is hard to unwind once data is loaded. Authorization and audit are yours to assemble: HAPI provides the AuthorizationInterceptor, consent and search narrowing interceptors and BALP audit logging, but states it does not supply a single security layer. Upgrades are an ongoing cost. Version 8.2.0 and later require JDK 17, so your runtime, container base image and Spring or servlet container all need to move with the server. Confirm the exact JDK level for the release you pin, and test schema migrations on a copy of production data.
Implementing the Microsoft project depends on where you run it. If you use the managed FHIR service in Azure Health Data Services, the work is Azure provisioning: the quickstarts cover the portal, CLI and PowerShell, and scripts and ARM templates are available for provisioning in the Microsoft Cloud. Running the open-source server outside Azure means you build that provisioning yourself. The persistence provider is the key early decision. The README says the SQL Database provider remains supported, while Cosmos DB provider support ended on 30 September 2026, so any plan that assumes Cosmos DB needs to be rebuilt on SQL before go-live. Identity mapping is the other early decision: the project provides scripts to map to Azure Active Directory for role-based access control, and you must map your own roles, groups and SMART scopes onto those roles. Confirm which identity provider you will use and how its claims map to FHIR access.
Projects on either server usually run long in four places. Identity integration is the most common, because SMART on FHIR scopes, consent rules, break-glass access and clinician role mapping touch the identity provider, the application and the audit trail at once. Data migration is next, especially when legacy records need mapping to FHIR resources and profiles, and when Microsoft's $convert-data operation or your own transformation code must be validated against the source. Terminology and validation work is easy to underestimate, because code systems, value sets and profile conformance must be loaded and tested, and HAPI's terminology and validation services need configuration to match your profiles. Conformance testing comes last and takes the longest to close. Ask any partner to write the test plan, including profile validation against your implementation guides and the FHIR versions you must support, before you agree on a scope.
Questions buyers ask before choosing or hiring help
What drives the cost of running HAPI FHIR or Microsoft's FHIR Server?
Neither project charges a license fee for the open-source code, since HAPI FHIR is Apache 2.0 licensed and Microsoft's fhir-server is MIT licensed. The cost comes from people, infrastructure and any paid support. You pay your own engineers or a contractor to build and operate the server, the database hosting (HAPI's starter supports PostgreSQL and Microsoft SQL Server for production), and, for Microsoft's version, the Azure resources that Azure bills. Commercial support for HAPI comes from Smile CDR, which the HAPI README points to, and that company quotes it separately. Ask each party for a written split between one-time build work and recurring hosting, upgrades and support.
Can our team run either FHIR server without outside help?
Yes, if your team already has platform skills, but both are open-source projects rather than managed products with a vendor on call. With HAPI FHIR, you own the JPA server, its database, security configuration and upgrades. Microsoft's Azure deployment removes some server operations, but the scripts and ARM templates still need someone who understands Azure identity and networking. Outside help is a choice about speed and coverage. DeployOpen plans, implements, hardens, backs up, upgrades and documents self-hosted open-source platforms inside your infrastructure, most engagements are fixed-scope, and retainers cover ongoing support and upgrades. Confirm your staff's on-call coverage before you decide.
Which skills does each FHIR server need from our engineers?
HAPI FHIR is a Java library and server, so plan for Java developers who can run the starter with Spring Boot, as a WAR on Tomcat, Jetty or Wildfly, or on Kubernetes with a Helm chart. Version 8.2.0 requires JDK 17. Database operators must run PostgreSQL or Microsoft SQL Server, because the starter defaults to an embedded H2 database and does not support MySQL. Identity owners must define access rules, since HAPI provides building blocks such as the AuthorizationInterceptor and consent interceptors rather than one complete security layer. Microsoft's project needs engineers who can deploy on Azure, map roles to Azure Active Directory and operate SQL databases. Confirm with the repository which language its code uses before you plan any source changes.
How does the Cosmos DB retirement change our FHIR server planning?
If your plan depended on the Cosmos DB provider, you need a migration plan now. The microsoft/fhir-server README says support for the Cosmos DB provider ended on 30 September 2026, while the SQL Database provider remains supported. That makes SQL the supported store for new work. Any existing Cosmos DB data needs a migration path that your team tests before cutover, and the supplied material does not describe the tooling for each version, so ask Microsoft or the maintainers. Also plan for FHIR R4B, since the README says its support ended on 1 July 2026, while R4 remains supported. HAPI's JPA server covers DSTU2, DSTU3, R4, R4B and R5, so you can choose the store and FHIR version together.
Can HAPI FHIR or Microsoft's FHIR Server run outside Azure?
HAPI FHIR can run outside Azure. Its JPA starter ships as the hapiproject/hapi Docker image and also supports Docker Compose, Spring Boot, WAR deployment and Kubernetes with a Helm chart. That fits your own data center, another cloud or a network your team controls. Microsoft's project documents deployment through the Azure portal, the CLI and PowerShell, with scripts and ARM templates for the Microsoft Cloud. The supplied material does not describe a supported deployment outside Azure, so confirm that with Microsoft and the microsoft/fhir-server repository before you commit. Ask which Azure-specific identity mappings, storage services and provisioning steps would need replacing. If you must stay on-premises or in a non-Microsoft cloud, HAPI is the simpler path to verify.
What should a fixed-scope quote for either server include?
Ask for a written scope that names the FHIR versions and resource types in use, the database and its version, the deployment target, and the identity provider and OAuth or SMART flows. The quote should list deliverables such as the deployed environments, configuration, access rules, audit logging and backup and restore tests, plus an upgrade procedure, documentation and handover. Also request acceptance criteria, the client responsibilities such as Azure subscription access or staff on call, the assumptions behind data migration volume, and the retainer terms for support after go-live. DeployOpen agrees scope, deliverables and timelines in writing before work starts and does not publish a price list, so the quote follows from that scope. Compare quotes only when each one covers the same written scope.
How DeployOpen helps teams choose and implement a FHIR server
DeployOpen plans, implements and supports self-hosted open-source platforms inside the client's own cloud accounts, data centers or air-gapped networks, so a HAPI FHIR or Microsoft FHIR Server decision is tested against your real hosting constraints. We help you choose the server that fits your FHIR version, data store and identity model, then build and document it to your scope.
How we scope
- Engagements are fixed-scope, with scope, deliverables and timelines agreed in writing before work starts.
- We confirm which FHIR versions, such as R4 or R5, your interfaces need before choosing between servers.
- We record your hosting target, whether Azure or another environment, and whether the Cosmos DB retirement affects your plans.
How we build
- We deploy the chosen server in your infrastructure, using the deployment method your platform team already runs.
- We configure authentication, authorization and audit logging to match your identity provider and access rules.
- We test FHIR conformance, search behavior and data loads against your sample data before any cutover.
How we hand over
- We document the architecture, configuration, backup procedures and upgrade steps so your team can operate the server.
- We prepare the security controls and evidence your compliance team needs, without issuing audit reports or certifications.
- We walk your engineers through runbooks and open issues, so ownership moves to your team on a clear date.
How we support
- Ongoing support, upgrades and continuous testing are available as retainers after handover.
- Upgrade work covers version changes such as FHIR release support windows and server release tracking.
- Support scope, response expectations and fees are set in the written retainer, so ask for them in your quote.

